MySQL外键约束的删除和更新

MySQL 外键约束的删除和更新可以通过使用 FOREIGN KEY 约束和相关的操作来实现。

删除操作

  1. CASCADE: 当主表中的记录被删除时,从表中相关的记录也会被自动删除。

    CREATE TABLE 主表 (
        id INT PRIMARY KEY,
        ...
    );
    
    CREATE TABLE 从表 (
        id INT,
        主表_id INT,
        FOREIGN KEY (主表_id) REFERENCES 主表(id) ON DELETE CASCADE,
        ...
    );
    
  2. SET NULL: 当主表中的记录被删除时,从表中相关的记录会被设置为 NULL。

    CREATE TABLE 主表 (
        id INT PRIMARY KEY,
        ...
    );
    
    CREATE TABLE 从表 (
        id INT,
        主表_id INT,
        FOREIGN KEY (主表_id) REFERENCES 主表(id) ON DELETE SET NULL,
        ...
    );
    
  3. RESTRICT: 当试图删除主表中的记录时,如果从表中存在相关记录,则会失败。

    CREATE TABLE 主表 (
        id INT PRIMARY KEY,
        ...
    );
    
    CREATE TABLE 从表 (
        id INT,
        主表_id INT,
        FOREIGN KEY (主表_id) REFERENCES 主表(id) ON DELETE RESTRICT,
        ...
    );
    

更新操作

  1. CASCADE: 当主表中的记录被更新时,从表中相关的记录也会被自动更新。

    CREATE TABLE 主表 (
        id INT PRIMARY KEY,
        ...
    );
    
    CREATE TABLE 从表 (
        id INT,
        主表_id INT,
        FOREIGN KEY (主表_id) REFERENCES 主表(id) ON UPDATE CASCADE,
        ...
    );
    
  2. SET NULL: 当主表中的记录被更新时,从表中相关的记录会被设置为 NULL。

    CREATE TABLE 主表 (
        id INT PRIMARY KEY,
        ...
    );
    
    CREATE TABLE 从表 (
        id INT,
        主表_id INT,
        FOREIGN KEY (主表_id) REFERENCES 主表(id) ON UPDATE SET NULL,
        ...
    );
    
  3. RESTRICT: 当试图更新主表中的记录时,如果从表中存在相关记录,则会失败。

    CREATE TABLE 主表 (
        id INT PRIMARY KEY,
        ...
    );
    
    CREATE TABLE 从表 (
        id INT,
        主表_id INT,
        FOREIGN KEY (主表_id) REFERENCES 主表(id) ON UPDATE RESTRICT,
        ...
    );
    

以上是 MySQL 中外键约束的删除和更新操作示例。