我想强制一个表的自动增量字段的一些值,我尝试了这样:
ALTER TABLE product AUTO_INCREMENT = 1453
AND
ALTER SEQUENCE product RESTART WITH 1453;
ERROR: relation "your_sequence_name" does not exist
我有一个表产品与Id和名称字段
我想强制一个表的自动增量字段的一些值,我尝试了这样:
ALTER TABLE product AUTO_INCREMENT = 1453
AND
ALTER SEQUENCE product RESTART WITH 1453;
ERROR: relation "your_sequence_name" does not exist
我有一个表产品与Id和名称字段
当前回答
注意,如果表名带有'_',它将在序列名中被删除。
例如,表名:user_tokens列:id 序列名称:usertokens_id_seq
其他回答
使用这个查询来检查什么是序列键与模式和表,
SELECT pg_get_serial_sequence('"SchemaName"."TableName"', 'KeyColumnName'); // output: "SequenceKey"
使用这个查询逐个增加增量值,
SELECT nextval('"SchemaName"."SequenceKey"'::regclass); // output 110
当插入到下一个表时,增量值将被用作键(111)。
使用此查询将特定值设置为增量值
SELECT setval('"SchemaName"."SequenceKey"', 120);
当插入到下一个表时,增量值将被用作键(121)。
如果你有一个带有IDENTITY列的表,你想要重置下一个值,你可以使用以下命令:
ALTER TABLE <table name>
ALTER COLUMN <column name>
RESTART WITH <new value to restart with>;
要将其设置为下一个最大值,您可以使用:
SELECT SETVAL(pg_get_serial_sequence('table_name', 'column_name'), (SELECT MAX(column_name) FROM table_name));
-- Change the starting value of the sequence
ALTER SEQUENCE project_id_seq RESTART 3000;
相同但充满活力:
SELECT SETVAL('project_id_seq', (SELECT MAX(id) FROM project));
SELECT的使用很奇怪,但它有效。
来源: https://kylewbanks.com/blog/Adding-or-Modifying-a-PostgreSQL-Sequence-Auto-Increment
编辑:删除+1建议在评论
注意,如果表名带有'_',它将在序列名中被删除。
例如,表名:user_tokens列:id 序列名称:usertokens_id_seq