我想强制一个表的自动增量字段的一些值,我尝试了这样:
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和名称字段
当前回答
2021年Postgres 11.12
ALTER SEQUENCE没有为我工作,它以某种方式将其重置为null。 对我有用的是:
SELECT setval('<table>_<column>_seq', 5);
其他回答
下面的命令会自动执行此操作:这也会删除表中的所有数据。所以要小心。
TRUNCATE TABLE someTable RESTART IDENTITY;
要重置自动递增,您必须通过使用以下查询获得您的序列名。
语法:
SELECT pg_get_serial_sequence(‘tablename’, ‘ columnname‘);
例子:
SELECT pg_get_serial_sequence('demo', 'autoid');
查询将返回autoid的序列名为"Demo_autoid_seq" 然后使用以下查询重置自动id
语法:
ALTER SEQUENCE sequenceName RESTART WITH value;
例子:
ALTER SEQUENCE "Demo_autoid_seq" RESTART WITH 1453;
使用这个查询来检查什么是序列键与模式和表,
SELECT pg_get_serial_sequence('"SchemaName"."TableName"', 'KeyColumnName'); // output: "SequenceKey"
使用这个查询逐个增加增量值,
SELECT nextval('"SchemaName"."SequenceKey"'::regclass); // output 110
当插入到下一个表时,增量值将被用作键(111)。
使用此查询将特定值设置为增量值
SELECT setval('"SchemaName"."SequenceKey"', 120);
当插入到下一个表时,增量值将被用作键(121)。
下面是你要找的命令,假设你的product表序列是product_id_seq:
ALTER SEQUENCE product_id_seq RESTART WITH 1453;
要将其设置为下一个最大值,您可以使用:
SELECT SETVAL(pg_get_serial_sequence('table_name', 'column_name'), (SELECT MAX(column_name) FROM table_name));