我想强制一个表的自动增量字段的一些值,我尝试了这样:
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和名称字段
当前回答
如果你想从GUI重置自动增量,那么按照这个步骤。
进入数据库 点击公共 在表格列表页面,你可以看到像“表”,“视图”,“序列”这样的标签。 点击序列 当你点击“序列”,你可以看到所有的序列列表,点击任何你想重置 之后,你可以看到多种选择,如“改变”,“设置值”,“重新启动”,“重置”等… 然后点击重置,然后添加一个新行。
其他回答
为方便浏览者,由评论转换而成
从这条消息中不清楚正确的语法是什么。它是:
ALTER SEQUENCE product_id_seq RESTART WITH 1453;
如果您使用id列创建了表product,那么序列就不是简单地称为product,而是product_id_seq(即${table}_${column}_seq)。
这是你需要的ALTER SEQUENCE命令:
ALTER SEQUENCE product_id_seq RESTART WITH 1453
您可以使用psql中的\ds命令查看数据库中的序列。如果您执行\d product并查看列的默认约束,那么nextval(…)调用也将指定序列名。
获取序列id使用
SELECT pg_get_serial_sequence('tableName', 'ColumnName');
这将为您提供序列id tableName_ColumnName_seq
要获得最后的种子数量使用
select currval(pg_get_serial_sequence('tableName', 'ColumnName'));
或者如果你知道序列id已经直接使用它。
select currval(tableName_ColumnName_seq);
它会告诉你最后的种子号
重置种子数量使用
ALTER SEQUENCE tableName_ColumnName_seq RESTART WITH 45
如果你有一个带有IDENTITY列的表,你想要重置下一个值,你可以使用以下命令:
ALTER TABLE <table name>
ALTER COLUMN <column name>
RESTART WITH <new value to restart with>;
如果表格是这样的
bigint NOT NULL GENERATED ALWAYS AS IDENTITY ( INCREMENT 1 START 0)
插入0-9范围内的记录后,会导致下次插入时发生冲突,因此重置START:
ALTER TABLE ... ALTER COLUMN ... RESTART WITH 10;