mysql中On Delete Cascade和On Update Cascade之间的区别

2 mysql database foreign-keys phpmyadmin foreign-key-relationship

我在MySQL数据库中有两个表 - parent, child. 我正在尝试根据父表向我的子表添加外键引用.有没有之间的任何显著差异ON UPDATE CASCADEON DELETE RESTRICT

我的父表

CREATE TABLE parent (
    id INT NOT NULL,
    PRIMARY KEY (id)
) ENGINE=INNODB;
Run Code Online (Sandbox Code Playgroud)

我的问题是:以下sql查询之间有什么区别.

1)

CREATE TABLE child (
    id INT, 
    parent_id INT,
    INDEX par_ind (parent_id),
    FOREIGN KEY (parent_id) 
        REFERENCES parent(id)
        ON DELETE CASCADE
) ENGINE=INNODB;
Run Code Online (Sandbox Code Playgroud)

2)

CREATE TABLE child (
    id INT, 
    parent_id INT,
    INDEX par_ind (parent_id),
    FOREIGN KEY (parent_id) 
        REFERENCES parent(id)
        ON UPDATE CASCADE
) ENGINE=INNODB;
Run Code Online (Sandbox Code Playgroud)

以下查询中是否有任何错误?

3)

 CREATE TABLE child (
        id INT, 
        parent_id INT,
        INDEX par_ind (parent_id),
        FOREIGN KEY (parent_id) 
            REFERENCES parent(id)
            ON UPDATE CASCADE ON DELETE CASCADE
    ) ENGINE=INNODB;
Run Code Online (Sandbox Code Playgroud)

这些查询(1,2和3)是什么意思?它们是一样的???

格拉西亚斯.

Sam*_*dhe 13

on delete cascade

删除父记录时,它将删除所有子记录,以便在删除父记录时不会有子记录.

on update cascade

当父记录ID发生变化时,它将更新子记录parent_id.在极少数情况下,我们使用更新级联

例如: - 假设您的父ID是4位数,由于之后的扩展,您需要将其更改为10位数.在这种情况下,ON UPDATE CASCADE将允许您更改主键值,并且具有该值的外键引用的任何表将相应地更改.