【问题标题】:Foreign key: on delete set null but only for one field of relation外键:删除时设置为空,但仅适用于关系的一个字段
【发布时间】:2013-10-28 14:12:26
【问题描述】:

我有两张表,它们通过几列的关系连接起来。我想创建外键来清理连接的实体,而不是删除它们 - 我需要使用“SET NULL”选项。

我的桌子:

CREATE TABLE resource
(
  id integer NOT NULL,
  project_id integer NOT NULL,
  lang character(2) NOT NULL,
  recource_id integer,
  reserved_by integer NOT NULL,
  CONSTRAINT resource_v0_pkey PRIMARY KEY (id, project_id,  lang);

CREATE TABLE resource_list
(
  id integer NOT NULL
  project_id integer NOT NULL,
  lang character(2) NOT NULL,
  name character varying(128),
  CONSTRAINT resource_list_v0_pkey PRIMARY KEY (id, project_id,  lang);
  );

当资源被删除时,如何添加以下 FK 以将 recurce_id 设置为 BULL。它应该看起来像这样:

ALTER TABLE resource
ADD CONSTRAINT $2
  FOREIGN KEY (resource_id, project_id, lang)
  REFERENCES resource_list(id, project_id, lang)
  ON DELETE SET NULL;

重要的是我只想将 NULL 设置为 resource.recource_id 而不是所有连接的字段。有可能吗?

【问题讨论】:

    标签: postgresql foreign-keys relational-database


    【解决方案1】:

    resource.id 是唯一的吗?如果是这样,请在此处添加一个唯一约束,以及设置为 null 的第二个外键。然后添加带有初始延迟检查的第二个外键。

    【讨论】:

      猜你喜欢
      • 2021-01-21
      • 2014-01-03
      • 2020-12-02
      • 1970-01-01
      • 2022-01-14
      • 1970-01-01
      • 2012-06-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多