微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

SQL - 通过连接表中的引用删除两个主键

如何解决SQL - 通过连接表中的引用删除两个主键

我有 3 张桌子:

  1. user --> 主键 = user_id
  2. account --> 主键 = account_id
  3. user_account_join_table --> 外键 = user_id,外键 = account_id

当我只知道 user_id 时,如何从所有 3 个表中删除所有关联条目? 一个用户可以有多个帐户,我想删除用户和所有帐户 用一条 sql 语句,只知道 user_id。

解决方法

您可以使用cascading delete,但如果您不会使用它,则使用事务来确保删除的完整性:

BEGIN TRANSACTION [Tran1]

  BEGIN TRY

     declare @userId int = 1; --your userId
     declare @accountIds table (id int);

     insert into @accountIds
     select accountId from user_account where userId = @userId;

     delete from user_account where userId = @userId;
     delete from [user] where id = @userId;
     delete from account where id in (select id from @accountIds);


      COMMIT TRANSACTION [Tran1]

  END TRY

  BEGIN CATCH

      ROLLBACK TRANSACTION [Tran1]

  END CATCH  

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。