Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Bagaimana cara menghapus dari beberapa tabel menggunakan INNER JOIN di SQL server

Anda dapat memanfaatkan tabel pseudo "dihapus" dalam contoh ini. Sesuatu seperti:

begin transaction;

   declare @deletedIds table ( id int );

   delete from t1
   output deleted.id into @deletedIds
   from table1 as t1
    inner join table2 as t2
      on t2.id = t1.id
    inner join table3 as t3
      on t3.id = t2.id;

   delete from t2
   from table2 as t2
    inner join @deletedIds as d
      on d.id = t2.id;

   delete from t3
   from table3 as t3 ...

commit transaction;

Jelas Anda dapat melakukan 'output dihapus.' pada penghapusan kedua juga, jika Anda membutuhkan sesuatu untuk bergabung di tabel ketiga.

Sebagai catatan tambahan, Anda juga dapat melakukan penyisipan.* pada pernyataan penyisipan, dan keduanya disisipkan.* dan dihapus.* pada pernyataan pembaruan.

EDIT: Juga, sudahkah Anda mempertimbangkan untuk menambahkan pemicu pada tabel1 untuk dihapus dari tabel2 + 3? Anda akan berada di dalam transaksi implisit, dan juga akan memiliki "disisipkan." dan "dihapus. " pseudo-tabel tersedia.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. RODBC odbcDriverConnect() Kesalahan Koneksi

  2. Cara membuat kueri pivot di server sql tanpa fungsi agregat

  3. C# Setara dengan Tipe Data SQL Server

  4. Tampilan di SQL Server

  5. Cara membuat banyak satu ke satu