开发者社区> 问答> 正文

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

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

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

展开
收起
保持可爱mmm 2020-05-17 18:52:06 739 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
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
One Box: 解读事务与分析一体化数据库 HybridDB for MySQL 立即下载
One Box:解读事务与分析一体化数据库HybridDB for MySQL 立即下载
如何支撑HTAP场景-HybridDB for MySQL系统架构和技术演进 立即下载

相关镜像