SQL:2011年规范
有五个选项ON DELETE
,ON UPDATE
它们可以应用于FOREIGN KEY
。这些<referential actions>
直接称为SQL:2011规范
ON DELETE CASCADE
:如果删除了引用表中的一行,则引用表中所有匹配的行都将被删除。
ON DELETE SET NULL
:如果删除了引用表的一行,则引用表的所有匹配行中的所有引用列都将设置为null。
ON DELETE SET DEFAULT
:如果删除了引用表的一行,则引用表的所有匹配行中的所有引用列都将设置为该列的默认值。
ON DELETE RESTRICT
注意:如果引用表中的行中有匹配的行,则禁止删除该行。
ON DELETE NO ACTION
(默认值):没有引用删除操作;参照约束仅指定约束检查。
外键建立从属关系。在<referential action>
确定何时关系溶解会发生什么。
示例/隐喻/说明
在这个例子中,我们将接受社会和经济的共同模式:每一个地方business
是维护的关系的公司bourgeoisie
通过fatcat_owner
。
CREATE TABLE bourgeoisie(
fatcat_owner varchar(100) PRIMARY KEY
);
INSERT INTO bourgeoisie(fatcat_owner) VALUES
( 'Koch Brothers' );
CREATE TABLE business (
name varchar(100),
fatcat_owner varchar(100) REFERENCES bourgeoisie
);
INSERT INTO business(name, fatcat_owner)
VALUES ('Georgia-Pacific', 'Koch Brothers');
如果所有社会business
都受到bourgeoisie
其直接影响,fatcat_owner
那么在工人革命之后,当您清洗fatcat_owner
社会并建立一个无阶级社会时,您会怎么做?
-- Viva la revolución
BEGIN;
DELETE FROM bourgeoisie;
END;
您这里有几个选择,