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

SQL-通过引用删除联接表中的两个主键,sql,join,foreign-keys,primary-key,cascade,Sql,Join,Foreign Keys,Primary Key,Cascade,我有三张桌子: 用户-->主键=用户id 帐户-->主键=帐户\u id 用户\帐户\加入\表-->外键=用户\ id,外键=帐户\ id 当我只知道用户id时,如何从所有3个表中删除所有关联条目? 一个用户可以有许多帐户,我想删除用户和所有帐户 使用一条SQL语句,只知道用户id。可以使用级联删除s,但如果不使用它,则使用事务来确保删除的完整性: BEGIN TRANSACTION [Tran1] BEGIN TRY declare @userId int = 1; --yo

我有三张桌子:

  • 用户-->主键=用户id
  • 帐户-->主键=帐户\u id
  • 用户\帐户\加入\表-->外键=用户\ id,外键=帐户\ id
  • 当我只知道用户id时,如何从所有3个表中删除所有关联条目? 一个用户可以有许多帐户,我想删除用户和所有帐户
    使用一条SQL语句,只知道用户id。

    可以使用
    级联删除
    s,但如果不使用它,则使用事务来确保删除的完整性:

    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  
    

    什么是数据库管理系统?引用完整性是否强制执行?为什么“使用一条SQL语句”?如何处理不同用户的帐户?您的问题需要更加清晰,还需要一个数据库标签。