【问题标题】:Difference between On Delete Cascade & On Update Cascade in mysqlmysql中On Delete Cascade和On Update Cascade之间的区别
【发布时间】:2014-10-15 22:08:12
【问题描述】:

我在 MySQL 数据库中有两个表 - parentchild。我正在尝试根据父表向我的子表添加外键引用。 ON UPDATE CASCADEON DELETE RESTRICT之间有什么显着区别

我的父表

CREATE TABLE parent (
    id INT NOT NULL,
    PRIMARY KEY (id)
) ENGINE=INNODB;

我的问题是:以下 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;

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;

下面的查询有什么错误吗??

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;

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

谢谢。

【问题讨论】:

    标签: mysql database phpmyadmin foreign-keys foreign-key-relationship


    【解决方案1】:

    on delete cascade

    删除父记录时会删除所有子记录,所以 删除父项时不会有子记录。

    on update cascade

    当父记录 id 时,它会更新子记录 parent_id 改变。在极少数情况下,我们使用更新级联

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-27
      • 2015-12-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多