[sql] postgres에서 자동 증분 카운터 재설정

테이블의 자동 증분 필드를 특정 값으로 설정하고 싶습니다.

ALTER TABLE product AUTO_INCREMENT = 1453

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

나는 postgres를 처음 사용합니다 🙁

나는 테이블이 productIdname필드



답변

테이블을 만든 경우 productid열, 다음 순서는 단순히 호출되지 product않고, product_id_seq(입니다 ${table}_${column}_seq).

이것이 ALTER SEQUENCE필요한 명령입니다.

ALTER SEQUENCE product_id_seq RESTART WITH 1453

\dspsql 의 명령을 사용하여 데이터베이스의 시퀀스를 볼 수 있습니다 . 당신이 경우에 \d product당신의 열의 기본 제약 봐의 nextval(...)호출은 너무 시퀀스 이름을 지정합니다.


답변

제품 테이블의 시퀀스가 ​​product_id_seq라고 가정하고 찾고있는 명령은 다음과 같습니다.

ALTER SEQUENCE product_id_seq 1453으로 다시 시작;


답변

다음 명령이 자동으로 이를 수행합니다. 테이블의 모든 데이터도 삭제됩니다. 그러니 조심해.

TRUNCATE TABLE someTable RESTART IDENTITY;


답변

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

setval('product_id_seq', 1453);

시퀀스 이름을 모르는 경우 pg_get_serial_sequence함수를 사용하십시오 .

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

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

또는 프롬프트 \d product에서 a 를 발행하십시오 psql.

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


답변

-시퀀스의 시작 값을 변경

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


답변

손님의 편의를 위해 의견에서 전환

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

ALTER SEQUENCE product_id_seq RESTART WITH 1453;


답변

GUI에서 자동 증분 을 재설정 하려면 다음 단계를 수행하십시오.

  1. 데이터베이스로 이동
  2. 공개를 클릭하십시오
  3. 테이블 목록 페이지에서 ‘테이블’, ‘보기’, ‘시퀀스’와 같은 TABS 를 볼 수 있습니다 .
  4. 시퀀스를 클릭하십시오
  5. ‘시퀀스’를 클릭하면 모든 시퀀스 목록을 볼 수 있습니다. 재설정 하려는 것을 클릭하십시오.
  6. 그 후 ‘Alter’, ‘Set Value’, ‘Restart’, ‘Reset’등과 같은 다중 선택을 볼 수 있습니다.
  7. 그런 다음 재설정 을 클릭 한 다음 새 행을 하나 추가하십시오.