简单的问题,但谷歌在合理的时间内无法提供帮助。 好的,我在 my_db 数据库中有用户表,其中包含 id 列。 我想运行非常简单的查询
SELECT id FROM user;
但它失败了。
你能想象吗?错误:列" id"不存在LINE 1:SELECT id FROM user;
好的,正在运行
SELECT * FROM user;
输出内部postgresql数据库用户列表,这与我的用户无关,它来自另一个[内部]数据库的数据。 但是,已建立与my_db的连接。
答案 0 :(得分:2)
以下查询可以重写为
SELECT id FROM my_db.public.user;
id 是列, my_db 是数据库,用户是表名,公用 - 是架构。有关模式的更多信息: http://www.postgresql.org/docs/9.1/static/ddl-schemas.html 所以你不必重命名表名。
答案 1 :(得分:1)
user
是返回当前登录用户的内部函数(和保留字)。
要将其用作您自己的标识符,您需要引用它:
select id
from "user"
或
select id
from public."user".
但是你应该真的避免使用保留字作为表名(或任何需要引用标识符的名称)