删除包含外键的数据

问题描述

我通常使用外键来获得良好的做法并维护数据完整性,但是在尝试删除某些数据时,我总是会遇到以下“问题”:

我有一个带有主组表的方案:

还有其他一些与组有关的表,例如:

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

course_group(课程与组之间的关系表)

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

我的问题是:是否可以使用任何函数或库,以便可以更自动地完成此工作?可以为我检查所有这些参考并且已经排除的功能。如果有人有任何想法如何使它更快并且以尽可能少的代码数表示感谢。 注意:我目前正在使用PHP

解决方法

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

说表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
)