MySQL外键约束的删除和更新
MySQL 外键约束的删除和更新可以通过使用 FOREIGN KEY 约束和相关的操作来实现。
删除操作
-
CASCADE: 当主表中的记录被删除时,从表中相关的记录也会被自动删除。
CREATE TABLE 主表 ( id INT PRIMARY KEY, ... ); CREATE TABLE 从表 ( id INT, 主表_id INT, FOREIGN KEY (主表_id) REFERENCES 主表(id) ON DELETE CASCADE, ... );
-
SET NULL: 当主表中的记录被删除时,从表中相关的记录会被设置为 NULL。
CREATE TABLE 主表 ( id INT PRIMARY KEY, ... ); CREATE TABLE 从表 ( id INT, 主表_id INT, FOREIGN KEY (主表_id) REFERENCES 主表(id) ON DELETE SET NULL, ... );
-
RESTRICT: 当试图删除主表中的记录时,如果从表中存在相关记录,则会失败。
CREATE TABLE 主表 ( id INT PRIMARY KEY, ... ); CREATE TABLE 从表 ( id INT, 主表_id INT, FOREIGN KEY (主表_id) REFERENCES 主表(id) ON DELETE RESTRICT, ... );
更新操作
-
CASCADE: 当主表中的记录被更新时,从表中相关的记录也会被自动更新。
CREATE TABLE 主表 ( id INT PRIMARY KEY, ... ); CREATE TABLE 从表 ( id INT, 主表_id INT, FOREIGN KEY (主表_id) REFERENCES 主表(id) ON UPDATE CASCADE, ... );
-
SET NULL: 当主表中的记录被更新时,从表中相关的记录会被设置为 NULL。
CREATE TABLE 主表 ( id INT PRIMARY KEY, ... ); CREATE TABLE 从表 ( id INT, 主表_id INT, FOREIGN KEY (主表_id) REFERENCES 主表(id) ON UPDATE SET NULL, ... );
-
RESTRICT: 当试图更新主表中的记录时,如果从表中存在相关记录,则会失败。
CREATE TABLE 主表 ( id INT PRIMARY KEY, ... ); CREATE TABLE 从表 ( id INT, 主表_id INT, FOREIGN KEY (主表_id) REFERENCES 主表(id) ON UPDATE RESTRICT, ... );
以上是 MySQL 中外键约束的删除和更新操作示例。