[sql] postgres에서 자동 증분 카운터 재설정
테이블의 자동 증분 필드를 특정 값으로 설정하고 싶습니다.
ALTER TABLE product AUTO_INCREMENT = 1453
과
ALTER SEQUENCE product RESTART WITH 1453;
ERROR: relation "your_sequence_name" does not exist
나는 postgres를 처음 사용합니다 🙁
나는 테이블이 product
와 Id
및 name
필드
답변
테이블을 만든 경우 product
와 id
열, 다음 순서는 단순히 호출되지 product
않고, product_id_seq
(입니다 ${table}_${column}_seq
).
이것이 ALTER SEQUENCE
필요한 명령입니다.
ALTER SEQUENCE product_id_seq RESTART WITH 1453
\ds
psql 의 명령을 사용하여 데이터베이스의 시퀀스를 볼 수 있습니다 . 당신이 경우에 \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에서 자동 증분 을 재설정 하려면 다음 단계를 수행하십시오.
- 데이터베이스로 이동
- 공개를 클릭하십시오
- 테이블 목록 페이지에서 ‘테이블’, ‘보기’, ‘시퀀스’와 같은 TABS 를 볼 수 있습니다 .
- 시퀀스를 클릭하십시오
- ‘시퀀스’를 클릭하면 모든 시퀀스 목록을 볼 수 있습니다. 재설정 하려는 것을 클릭하십시오.
- 그 후 ‘Alter’, ‘Set Value’, ‘Restart’, ‘Reset’등과 같은 다중 선택을 볼 수 있습니다.
- 그런 다음 재설정 을 클릭 한 다음 새 행을 하나 추가하십시오.