use*_*887 27 postgresql sequence
截断表后,我使用SELECT lastval()来获取错误的序列ID.
当我截断表时,我使用SELECT lastval(),我得到了错误的ID /
Igo*_*nko 65
尝试
TRUNCATE TABLE table_name
RESTART IDENTITY;
Run Code Online (Sandbox Code Playgroud)
它会
自动重新启动截断表的列所拥有的序列.
详情:TRUNCATE
Eri*_*ang 19
以下是重置序列的标准方法:
truncate table table_name restart identity;
Run Code Online (Sandbox Code Playgroud)
但在某些版本和平台中,它的语法错误,
在这种情况下,你可以截断没有重置序列,并用另一个sql改变序列,试试这个:
truncate table table_name;
alter sequence seq_name start 1;
Run Code Online (Sandbox Code Playgroud)
重置序列以从数字 1 开始的最佳方法是在成功截断它后执行以下操作:
ALTER SEQUENCE <tablename>_<id>_seq RESTART WITH 1
Run Code Online (Sandbox Code Playgroud)
因此,例如对于用户表,它将是:
ALTER SEQUENCE users_id_seq RESTART WITH 1
Run Code Online (Sandbox Code Playgroud)
如果你想重置序列,那么:
setval('sequence_name', 0)
Run Code Online (Sandbox Code Playgroud)
要列出现有的序列名称,请\ds
在 psql 提示符下发出 a 。
归档时间: |
|
查看次数: |
24307 次 |
最近记录: |