我在清空表格后,使用 SELECT lastval() 获取到错误的序列号。
当我清空表格时,使用 SELECT lastval() 会得到错误的ID。
我在清空表格后,使用 SELECT lastval() 获取到错误的序列号。
当我清空表格时,使用 SELECT lastval() 会得到错误的ID。
使用 SQL 命令 TRUNCATE
。
对于单个表,语法如下:
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
ALTER SEQUENCE users_id_seq RESTART WITH 1
尝试这个:
TRUNCATE TABLE 表名 RESTART IDENTITY CASCADE;
请检查下一个
ALTER SEQUENCE sequence_name RESTART WITH 1;
如果你想要重置序列,那么:
setval('sequence_name', 0)
要列出现有的序列名称,请在psql提示符下输入\ds
。
您可以使用以下SQL语句来在PostgreSQL中重置标识:
TRUNCATE TABLE table_name RESTART IDENTITY;
但请注意,无法在Redshift中重新设定identity。重置Redshift的方法是删除并重新创建表格。
TRUNCATE TABLE my_table RESTART IDENTITY;
- Wojtas