Postgres:使用外键将行插入表中

时间:2013-12-08 03:46:19

标签: sql postgresql

我有一个包含外键type的表格,该表格链接到表格wp_types。每当我尝试在该表中插入一行时,我都会收到错误:

ERROR:  permission denied for schema base
LINE 1: SELECT 1 FROM ONLY "base"."wp_types" x WHERE "id" OPERATOR(p...
                       ^
QUERY:  SELECT 1 FROM ONLY "base"."wp_types" x WHERE "id" OPERATOR(pg_catalog.=) $1 FOR SHARE OF x

查询正在以postgres身份执行。 另外我不明白这个查询试图做什么,它显然与检查外键约束有关,但我不明白如何。

2 个答案:

答案 0 :(得分:2)

来自postgresql docs:

  

如果指定了ONLY,则仅扫描该表。如果未指定ONLY,则扫描表及其所有后代表(如果有)。

正如您所提到的,错误与检查外键有关。当指定ONLY时,postgres无法检查它们并且可能会导致错误。

答案 1 :(得分:0)

两点:

  1. 您是否可以从postgres用户中删除超级用户权限?

  2. 基本架构的权限是什么?

  3. 现在要考虑的一件事是你不确定查询在做什么。一个简单的EXPLAIN可以显示它正在做什么,但错误表明问题在于架构权限,而不在于查询正在做什么。

    尝试:

     GRANT USAGE ON SCHEMA base TO postgres;