开发者社区> 问答> 正文

如何更改外键引用动作?(行为)?mysql

我已经建立了一个表,该表包含带有外键的列,并将其设置为ON DELETE CASCADE(删除父级时删除子级)

SQL命令将其更改ON DELETE RESTRICT为什么?(如果有孩子,则不能删除其父母)

展开
收起
保持可爱mmm 2020-05-17 18:52:06 716 0
1 条回答
写回答
取消 提交回答
  • 旧问题,但添加了答案,以便获得帮助

    它分为两个步骤:

    假设,a table1具有 列名称为,约束条件名称为的外键,并通过键被引用到表中(如下图所示)。 fk_table2_idfk_nametable2t2

    table1 [ fk_table2_id ] --> table2 [t2] 第一步,删除旧的约束:(参考)

    ALTER TABLE table1 DROP FOREIGN KEY fk_name;
    通知约束已删除,列未删除

    第二步,添加新约束:

    ALTER TABLE table1
    ADD CONSTRAINT fk_name FOREIGN KEY (fk_table2_id) REFERENCES table2 (t2) ON DELETE CASCADE;
    添加约束,列已经在那里

    例:

    我有一个UserDetails表是指Users表:

    mysql> SHOW CREATE TABLE UserDetails; : : User_id int(11) DEFAULT NULL, PRIMARY KEY (Detail_id), KEY FK_User_id (User_id), CONSTRAINT FK_User_id FOREIGN KEY (User_id) REFERENCES Users (User_id) : : 第一步:

    mysql> ALTER TABLE UserDetails DROP FOREIGN KEY FK_User_id; Query OK, 1 row affected (0.07 sec)
    第二步:

    mysql> ALTER TABLE UserDetails ADD CONSTRAINT FK_User_id -> FOREIGN KEY (User_id) REFERENCES Users (User_id) ON DELETE CASCADE; Query OK, 1 row affected (0.02 sec)
    结果:

    mysql> SHOW CREATE TABLE UserDetails; : : User_id int(11) DEFAULT NULL, PRIMARY KEY (Detail_id), KEY FK_User_id (User_id), CONSTRAINT FK_User_id FOREIGN KEY (User_id) REFERENCES Users (User_id) ON DELETE CASCADE来源:stack overflow :

    2020-05-17 18:56:46
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
搭建电商项目架构连接MySQL 立即下载
搭建4层电商项目架构,实战连接MySQL 立即下载
PolarDB MySQL引擎重磅功能及产品能力盛大发布 立即下载

相关镜像