当前位置: 首页 > 知识库问答 >
问题:

列_id未找到外键引用

闾丘炫明
2023-03-14

我将在7周内浏览7个数据库。

在 PostgreSQL 中,我创建了一个具有串行venue_id列的地点表。

< code>\d场馆的输出

                                        Table "public.venues"
     Column     |          Type          |                         Modifiers
----------------+------------------------+-----------------------------------------------------------
 venue_id       | integer                | not null default nextval('venues_venue_id_seq'::regclass)
 name           | character varying(255) |
 street_address | text                   |
 type           | character(7)           | default 'public'::bpchar
 postal_code    | character varying(9)   |
 country_code   | character(2)           |
Indexes:
    "venues_pkey" PRIMARY KEY, btree (venue_id)
Check constraints:
    "venues_type_check" CHECK (type = ANY (ARRAY['public'::bpchar, 'private'::bpchar]))
Foreign-key constraints:
    "venues_country_code_fkey" FOREIGN KEY (country_code, postal_code) REFERENCES cities(country_code, postal_code) MATCH FULL

下一步是创建一个用外键引用venue_id的事件表。

我在尝试这个:

CREATE TABLE events (
event_id SERIAL PRIMARY KEY,
title text,
starts timestamp,
ends timestamp,
FOREIGN KEY (venue_id) REFERENCES venues (venue_id));

我得到这个错误:

ERROR: column "venue_id" referenced in forgein key not found

怎么了?

共有2个答案

罗韬
2023-03-14

我正在阅读本书的第二版,所以事情可能会略有变化。

要创建表,您必须明确地将venues_id声明为表中的列,就像其余列一样:

CREATE TABLE events (
    event_id SERIAL PRIMARY KEY,
    title text,
    starts timestamp,
    ends timestamp,
    venue_id integer,  -- this is the line you're missing!
    FOREIGN KEY (venue_id)
        REFERENCES venues (venue_id) MATCH FULL
    );

执行该操作后,将创建该表:

7dbs=# \dt
           List of relations
 Schema |   Name    | Type  |  Owner
--------+-----------+-------+----------
 public | cities    | table | postgres
 public | countries | table | postgres
 public | events    | table | postgres
 public | venues    | table | postgres
郎子平
2023-03-14

您还需要初始化外键列。看这里http://www.postgresql.org/docs/current/static/ddl-constraints.html#DDL-CONSTRAINTS-FK来源

 类似资料:
  • 我更新了我的尝试,将一些内容保留为CHAR,但仍然得到一个类似的错误:第1行错误:ORA-02091:事务回滚ORA-02291:违反完整性约束(MMM1339.ITEMNO_PHAR_FK)-未找到父密钥 需求的外键都在不同的供应主键中有值,所以我不确定为什么仍然存在问题。

  • 我的应用程序正在尝试外部化所有项目属性,一些属性将位于我的应用程序中,而另一个属性将位于 Windows 中某处的文件夹中。 我将Spring设置为这样执行:-Spring . config . location = file:///C:\ Temp \ config \ application . properties,class path:application . properties 如您

  • 问题内容: 这与这个问题有些相关: 我有一个带有主键的表,并且我有几个表引用该主键(使用外键)。我需要从该表中删除行,在该表中其他任何表(以及其他一些约束)中都未引用主键。 例如: 等等。组中的某些行在任何表中均未引用,因此我需要删除这些行。除此之外,我需要知道如何查找所有在Group中引用给定行的表/行。 我知道我可以查询每个表并检查groupid,但是由于它们是外键,所以我想有一种更好的方法。

  • 我试图将一个新表添加到一个已经存在的数据库中,但它总是给我一个错误“外键定义中的未知列'PRODUCT_ID'”。 如有任何帮助,我将不胜感激

  • 问题内容: 在PostgreSQL中,我有一个数据库,我打算进行以下表声明: 一切正常,除了在创建最后一个表(更正)时出现以下错误: 错误:没有唯一的约束匹配给定键的引用表“提交” 我对更正表的打算是对每个提交都有唯一的更正,但是一个提交可以(也可以不)具有更正。 我该如何解决这个错误?是设计问题还是表声明错误? 问题答案: 外键约束不关心所引用的列是否在引用另一列本身。但是引用的列 必须 是唯一

  • 我创建了一个带有主键(UsersID、AccountsID)的帐户/用户表,如下所示。我是否应该为Users表添加索引?