如果您尝试设置如下序列号:
SELECT setval('table_ID_seq', (SELECT max("ID") + 1 FROM table));
您可能会遇到以下错误:
ERROR: relation "table_ID_seq" does not exist
LINE 1: SELECT setval('table_ID_seq', (SELECT max("ID") + 1 FROM t...
^
********** Error **********
ERROR: relation "table_id_seq" does not exist
SQL Status:42P01
答案 0 :(得分:10)
问题在于PostgreSQL会将标识符名称规范化,除非它们用双引号括起来。
然而,这不起作用:
SELECT setval("table_ID_seq", (SELECT max("ID") + 1 FROM table));
相反,您必须在双引号文本周围添加单引号:
SELECT setval('"table_ID_seq"', (SELECT max("ID") + 1 FROM table));
答案 1 :(得分:0)
使用前面的所有技巧,错误仍然存在。我确定需要执行从数字值到整数的转换。
必须强制返回整数。
select setval ('YOUR_ID_SEQ', (select cast (max (YOUR_COLUMN) as integer) from YOUR_TABLE));