我有两个表,它们通过几列上的关系连接起来。我想创建外键来处理清理已连接的实体但不删除它们 - 我需要使用“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以将recource_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;
重要的是,我希望仅对resource.recource_id设置NULL,而不是为所有连接的字段设置NULL。有可能吗?
答案 0 :(得分:0)
resource.id是唯一的吗?如果是这样,那么在那里添加一个唯一约束,并设置第二个设置为null的外键。然后添加第二个外键并进行最初延期检查。