복붙노트

[SQL] 포스트 그레스에서 재설정 자동 증가 카운터

SQL

포스트 그레스에서 재설정 자동 증가 카운터

나는이 함께했는데, 어떤 값으로 테이블의 자동 증가 필드를 강제로 싶습니다

ALTER TABLE product AUTO_INCREMENT = 1453

ALTER SEQUENCE product  RESTART WITH 1453;
ERROR:  relation "your_sequence_name" does not exist

나는 포스트 그레스에 새로운 해요 :(

나는 ID와 이름 필드와 테이블 제품이

해결법

  1. ==============================

    1.당신은 ID 열이있는 테이블 제품을 만든 경우, 다음 순서는 단순히 (이다, $ {테이블} _ $ {열} _seq) 오히려 product_id_seq 제품이라고하지만,하지 않습니다.

    당신은 ID 열이있는 테이블 제품을 만든 경우, 다음 순서는 단순히 (이다, $ {테이블} _ $ {열} _seq) 오히려 product_id_seq 제품이라고하지만,하지 않습니다.

    이것은 당신이 필요로하는 ALTER 시퀀스 명령입니다 :

    ALTER SEQUENCE product_id_seq RESTART WITH 1453
    

    당신은 \ DS를 사용하여 데이터베이스의 시퀀스는 psql의에서 명령을 볼 수 있습니다. 당신이 당신의 열에 대한 기본 제약에서 \ D 제품과 모양을 할 경우, NEXTVAL (...) 호출이 너무 시퀀스 이름을 지정합니다.

  2. ==============================

    2.여기 당신이 찾고있는 제품 테이블에 대한 당신의 순서를 가정하고 있다는 명령은 product_id_seq입니다 :

    여기 당신이 찾고있는 제품 테이블에 대한 당신의 순서를 가정하고 있다는 명령은 product_id_seq입니다 :

  3. ==============================

    3.다음 명령은 당신을 위해이 작업을 자동으로 수행 : 이것은 또한 테이블의 모든 데이터가 삭제됩니다. 그러니 조심해.

    다음 명령은 당신을 위해이 작업을 자동으로 수행 : 이것은 또한 테이블의 모든 데이터가 삭제됩니다. 그러니 조심해.

    TRUNCATE TABLE someTable RESTART IDENTITY;
    
  4. ==============================

    4.시퀀스 카운터를 설정하려면 :

    시퀀스 카운터를 설정하려면 :

    setval('product_id_seq', 1453);
    

    당신이 모르는 경우 시퀀스 이름은 pg_get_serial_sequence 기능을 사용 :

    select pg_get_serial_sequence('product', 'id');
     pg_get_serial_sequence 
    ------------------------
     public.product_id_seq
    

    매개 변수는 테이블 이름과 열 이름입니다.

    아니면 그냥 프롬프트 psql의에서 \ D 제품을 실행

    => \d product
                             Table "public.product"
     Column |  Type   |                      Modifiers                       
    --------+---------+------------------------------------------------------
     id     | integer | not null default nextval('product_id_seq'::regclass)
     name   | text    | 
    
  5. ==============================

    5.방문자의 편의를 위해 코멘트로 변환

    방문자의 편의를 위해 코멘트로 변환

    그것은 올바른 구문이 무엇인지이 메시지에서 명확하지 않다. 그것은:

    ALTER SEQUENCE product_id_seq RESTART WITH 1453;
    
  6. ==============================

    6.- 순서의 ​​변경 시작 값

    - 순서의 ​​변경 시작 값

    ALTER SEQUENCE project_id_seq RESTART 3000;
    

    동일하지만, 동적 :

    SELECT SETVAL('project_id_seq', (SELECT MAX(id) + 1 FROM project));
    

    나는 SELECT의 사용을 방해한다 동의하지만 작동합니다.

    출처 : https://kylewbanks.com/blog/Adding-or-Modifying-a-PostgreSQL-Sequence-Auto-Increment

  7. ==============================

    7.당신이 GUI에서 자동 증가를 재설정하려는 경우, 다음이 단계를 수행하십시오.

    당신이 GUI에서 자동 증가를 재설정하려는 경우, 다음이 단계를 수행하십시오.

  8. ==============================

    8.당신은 당신이 다음 명령을 사용할 수 있습니다에 대한 다음 값을 재설정 할 것인지 IDENTITY 열이있는 테이블이있는 경우 :

    당신은 당신이 다음 명령을 사용할 수 있습니다에 대한 다음 값을 재설정 할 것인지 IDENTITY 열이있는 테이블이있는 경우 :

    ALTER TABLE <table name> 
        ALTER COLUMN <column name> 
            RESTART WITH <new value to restart with>;
    
  9. ==============================

    9.당신이 다음 쿼리를 사용하여 시퀀스 이름을 가져올 수있는 자동 증가를 재설정합니다.

    당신이 다음 쿼리를 사용하여 시퀀스 이름을 가져올 수있는 자동 증가를 재설정합니다.

    통사론:

    SELECT pg_get_serial_sequence(‘tablename’, ‘ columnname‘);
    

    예:

    SELECT pg_get_serial_sequence('demo', 'autoid');
    

    쿼리는 "Demo_autoid_seq"로 autoid의 시퀀스 이름을 반환합니다 그런 다음 autoid를 다시 다음과 같은 쿼리를 사용하여

    통사론:

    ALTER SEQUENCE sequenceName RESTART WITH value;
    

    예:

    ALTER SEQUENCE "Demo_autoid_seq" RESTART WITH 1453;
    
  10. ==============================

    10.시퀀스 ID의 사용을 얻으려면

    시퀀스 ID의 사용을 얻으려면

    SELECT pg_get_serial_sequence('tableName', 'ColumnName');
    

    이 의지는 TABLENAME의 ColumnName 서열 같이 시퀀스 ID를 제공합니다

    마지막 씨앗 번호 사용을 얻는

    select currval(pg_get_serial_sequence('tableName', 'ColumnName'));
    

    당신이 순서 ID를 알고있는 경우 이미 직접 사용합니다.

    select currval(tableName_ColumnName_seq);
    

    그것은 것입니다 당신에게 마지막으로 종자 수를 제공

    씨앗 번호 사용을 재설정하려면

    ALTER SEQUENCE tableName_ColumnName_seq RESTART WITH 45
    
  11. from https://stackoverflow.com/questions/5342440/reset-auto-increment-counter-in-postgres by cc-by-sa and MIT license