postgresql - 为什么 "setval()"会因 "relation ... does not exist"而失败?

标签 postgresql

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

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

最佳答案

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

但是,这是行不通的:

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

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

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

关于postgresql - 为什么 "setval()"会因 "relation ... does not exist"而失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14484059/

相关文章:

postgresql - 针对 9.3 数据库使用 postgresql jdbc 4.2 驱动程序的连接验证错误——SEARCH_PATH 关键字明显区分大小写

postgresql - fatal error : role "root" does not exist ?

node.js - 尝试访问本地主机中的数据库时如何修复 "Error: The server does not support SSL connections"?

macos - 无法找出 Mac OS X 中 PostgreSQL 的数据目录

python Popen chmod错误启动Postgresql

sql - 尝试分析两个时间间隔 - 我的 WHERE 子查询返回太多行

ruby - 使用 Ruby 使用数据库 url 查询 Postgres 数据库

ruby-on-rails - 是否可以创建一个在其行创建时定义的不明确外键?

ruby-on-rails - 删除 "Friend"的用户正在删除用户对象

database - db.Exec(...) 返回的错误是否有代码?