【问题标题】:How do I delete all related records?如何删除所有相关记录?
【发布时间】:2019-08-26 06:26:06
【问题描述】:

我正在尝试删除一个用户以及与他相关的所有相关记录,但我不知道如何使用 SQL INNER JOIN 语句,有没有办法以如下方式进行操作:

DELETE * FROM tblUsers, tblEnrollment, tblLinkActivities, tblFullSchedule, tblSchedule, tblLinkMedical
WHERE [IDUser] = ?

(我知道这完全不正确)

我的关系图表如下所示:

使用 6 个删除命令会更容易吗?还是有另一个命令可以做到这一点?非常感谢..

【问题讨论】:

  • 另一种 - 也很常见的 - 方法是在用户表中有一个布尔字段 Inactive。要“删除”用户,请将此字段设置为 True。然后,对于所有正常使用,使用查询 ActiveUsers,例如:Select * From tblUsers Where Inactive = False

标签: sql ms-access inner-join


【解决方案1】:

由于您已经定义了具有参照完整性的关系,只需为每个关系设置级联删除相关记录选项。

https://support.office.com/en-us/article/create-edit-or-delete-a-relationship-dfa453a7-0b6d-4c34-a128-fdebc7e686af#__bmcascade

这样你只需要从tblUsers中删除,所有相关记录都会自动删除。

如果您不能或不想这样做,则需要在删除主记录之前对相关表运行单独的删除查询。

【讨论】:

    【解决方案2】:

    在单个sql查询中无法同时删除多个表中的记录。您需要编写多个删除语句。更好的方法是编写一个包含所有表的内部查询并在每个表中删除。 例如: 从 dept where DEPTNO IN 删除(从 emp a 中选择 a.DEPTNO,dept b where a.DEPTNO=b.DEPTNO and a.DEPTNO=10) delete from emp where DEPTNO IN (Select a.DEPTNO from emp a , dept b where a.DEPTNO=b.DEPTNO

    【讨论】:

      猜你喜欢
      • 2019-06-27
      • 2020-02-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-26
      相关资源
      最近更新 更多