截断表后,我使用 SELECT lastval() 获取错误的序列号。
当我截断表时,我使用 SELECT lastval(),我得到了错误的 ID/
使用TRUNCATE
SQL 命令。
对于单个表,语法如下:
TRUNCATE TABLE table_name RESTART IDENTITY;
对于多个表:
TRUNCATE TABLE table_foo, table_bar RESTART IDENTITY;
它能做什么:
自动重新启动截断表的列所拥有的序列。
以下是重置序列的标准方法:
truncate table table_name restart identity;
但在某些版本和平台中,这是语法错误,
在这种情况下,您可以在不重置序列的情况下截断,并使用另一个 sql 更改序列,试试这个:
truncate table table_name;
alter sequence seq_name start 1;
将序列重置为从数字 1 开始的最佳方法是在成功截断序列后执行以下操作:
ALTER SEQUENCE <tablename>_<id>_seq RESTART WITH 1
因此,例如对于 users 表,它将是:
ALTER SEQUENCE users_id_seq RESTART WITH 1
检查下一个
ALTER SEQUENCE sequence_name RESTART WITH 1;
尝试这个:
TRUNCATE TABLE table_name RESTART IDENTITY CASCADE;
如果要重置序列,则:
setval('sequence_name', 0)
要列出现有的序列名称\ds
,请在 psql 提示符处发出 a。