【问题标题】:SQL - Delete from Multiple Tables (with FK)SQL - 从多个表中删除(使用 FK)
【发布时间】:2020-11-02 18:09:27
【问题描述】:

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

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

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

 - Id 
 - Name  
 - AccountId

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

 - Id
 - Settings

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

 - Id
 - AppointmentExtensionId(FK)

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

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

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

【问题讨论】:

    标签: sql sql-server


    【解决方案1】:

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

    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
    

    【讨论】:

      【解决方案2】:

      使用delete from join

      delete si
      from SettingItems si 
      join Appointment a on si.AppointmentExtensionId = a.id
           and a.AccountId = @accountId;
      
      delete ae
      from AppointmentExtension ae 
      join Appointment a on ae.id = a.id
           and a.AccountId = @accountId;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-01-19
        • 1970-01-01
        • 2014-07-28
        • 2013-11-08
        • 1970-01-01
        • 2019-01-13
        • 2023-03-04
        相关资源
        最近更新 更多