6

如果您尝试像这样设置序列号:

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
4

2 回答 2

22

问题是 PostgreSQL 将规范化标识符名称,除非它们被放在双引号中。

但是,这不起作用:

SELECT setval("table_ID_seq", (SELECT max("ID") + 1 FROM table));

相反,您必须在双引号文本周围加上单引号:

SELECT setval('"table_ID_seq"', (SELECT max("ID") + 1 FROM table));
于 2013-01-23T16:08:58.260 回答
0

使用所有先前的提示,错误仍然存​​在。我确定需要执行从数值到整数的转换。

有必要强制返回整数。

select setval ('YOUR_ID_SEQ', (select cast (max (YOUR_COLUMN) as integer) from YOUR_TABLE));
于 2020-06-21T21:53:02.590 回答