我在截断表后使用SELECT lastval()来获取错误的序列号。
当我截断表时,我使用SELECT lastval(),我得到了错误的ID /
答案 0 :(得分:63)
答案 1 :(得分:19)
以下是重置序列的标准方法:
truncate table table_name restart identity;
但在某些版本中&平台,它的语法错误,
在这种情况下,你可以截断没有重置序列,并用另一个sql改变序列,试试这个:
truncate table table_name;
alter sequence seq_name start 1;
答案 2 :(得分:3)
检查下一个
ALTER SEQUENCE sequence_name RESTART WITH 1;
答案 3 :(得分:2)
如果您想重置序列,那么:
setval('sequence_name', 0)
列出现有的序列名称,在psql提示符下发出\ds
。
答案 4 :(得分:2)
重置序列以使用数字1重新开始的最佳方法是在成功截断它后执行以下命令:
ALTER SEQUENCE <tablename>_<id>_seq RESTART WITH 1
因此,例如对于users表,它将是:
ALTER SEQUENCE users_id_seq RESTART WITH 1