首页 > 解决方案 > SQL - 从多个表中删除(使用 FK)

问题描述

我正在尝试从三个表中删除数据。我有一个我要设置的 AccountId,然后我想删除关联的数据。

Appointment.Id 和 AppointmentExtension.Id 中的 Id 是相同的值(GUID)

Table:Appointment
---------------------

 - Id 
 - Name  
 - AccountId

Table: AppointmentExtension
----------------------

 - Id
 - Settings

Table:SettingItems
---------------------

 - Id
 - AppointmentExtensionId(FK)

所以本质上我想设置参数@accountId. = "ABCD" 并删除所有记录。

请注意,我有一个 FK SettingItems.AppointmentExtensionId = AppointmentExtension.Id,假设由于 FK,我需要删除表中的所有项目,SettingItems然后再删除其他两个项目?

如何做到这一点的一个例子会很棒?

标签: sqlsql-server

解决方案


您需要从孩子开始,顺序如下:

delete from SettingItems
where AppointmentExtensionId in ( select Id from AppointmentExtension)

delete from AppointmentExtension where id in ( select id from  Appointment where @AccountId = accountId

delete from Appointment where @AccountId = accountId

推荐阅读