美文网首页
MySQL级联操作

MySQL级联操作

作者: 村东头老骥 | 来源:发表于2020-02-17 21:45 被阅读0次

    MySQL级联操作

    外键约束对子表的含义:

    • 如果在父表中找不到候选键,则不允许在子表上进行insert/update

    外键约束对父表的含义:

    • 在父表上进行update/delete以更新或删除在子表中有一条或多条对应匹配行的候选键时,父表的行为取决于:在定义子表的外键时指定的on update/on delete子句, InnoDB支持5种方式, 分列如下
      cascade方式
      在父表上update/delete记录时,同步update/delete掉子表的匹配记录
      On delete cascade从mysql3.23.50开始可用; on update cascade从mysql4.0.8开始可用
    mysql> select * from student;
    +----+-------+----------+
    | id | name  | class_id |
    +----+-------+----------+
    |  1 | Kevin |        1 |
    |  2 | En    |        2 |
    +----+-------+----------+
    mysql> select * from class;
    +----+------------+
    | id | class_name |
    +----+------------+
    |  1 | 一班       |
    |  2 | 二班       |
    +----+------------+
    2 rows in set (0.00 sec)
    mysql> select * from student;
    +----+------+----------+
    | id | name | class_id |
    +----+------+----------+
    |  2 | En   |        2 |
    +----+------+----------+
    1 row in set (0.00 sec)
    

    set null方式
    在父表上update/delete记录时,将子表上匹配记录的列设为null
    要注意子表的外键列不能为not null
    On delete set null从mysql3.23.50开始可用; on update set null从mysql4.0.8开始可用

    mysql> select * from student join class;
    +----+------+----------+----+------------+
    | id | name | class_id | id | class_name |
    +----+------+----------+----+------------+
    |  2 | En   |        2 |  2 | 二班       |
    +----+------+----------+----+------------+
    1 row in set (0.00 sec)
    
    mysql> delete from class where id = 2;
    Query OK, 1 row affected (0.01 sec)
    
    mysql> select * from student;
    +----+------+----------+
    | id | name | class_id |
    +----+------+----------+
    |  2 | En   |     NULL |
    +----+------+----------+
    1 row in set (0.00 sec)
    

    No action方式
    如果子表中有匹配的记录,则不允许对父表对应候选键进行update/delete操作
    这个是ANSI SQL-92标准,从mysql4.0.8开始支持
    Restrict方式
    同no action, 都是立即检查外键约束
    SET DEFAULT
    SET DEFAULT: InnoDB目前不支持。

    相关文章

      网友评论

          本文标题:MySQL级联操作

          本文链接:https://www.haomeiwen.com/subject/uywifhtx.html