【问题标题】:Delete data that contains foreign key删除包含外键的数据
【发布时间】:2020-10-07 16:56:31
【问题描述】:

我通常使用外键来获得良好实践并维护数据完整性,但在尝试删除某些数据时我总是面临以下“问题”:

我有一个主要组表的场景:groups

我还有其他几个与组相关的表,例如:

user_group(用户和组之间的关系表)

course_group(课程与小组的关系表)

删除组时,我总是需要在之前删除相关表中对该组的引用......但目前我有几个关系表,我的排除代码最终变得非常大。

我的问题是:有没有我可以使用的函数或库,以便可以更自动地完成这项工作?一个可以为我检查所有这些引用并已经排除的函数。如果有人知道如何以尽可能少的代码使其更快,谢谢。 注意:我目前正在使用 PHP

【问题讨论】:

    标签: php mysql sql foreign-keys sql-delete


    【解决方案1】:

    您希望 on delete cascade 作为 children 表的外键约束中的一个选项。

    说那张桌子groups 看起来像:

    create table groups (
        id int primary key,
        ... -- other columns here
    );
    

    然后您将子表 user_groups 声明为:

    create table user_groups (
        ... -- some columns here
        group_id int,
        foreign key (group_id) references groups(id) on delete cascade
    )
    

    【讨论】:

    • 太棒了!正是我需要的!非常感谢!
    猜你喜欢
    • 1970-01-01
    • 2014-02-09
    • 1970-01-01
    • 1970-01-01
    • 2016-12-16
    • 2019-07-27
    • 1970-01-01
    • 2021-12-24
    • 1970-01-01
    相关资源
    最近更新 更多