Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Memadam daripada Berbilang Jadual dengan INNER JOIN dalam SQL Server?

Bagaimana untuk Memadam daripada Berbilang Jadual dengan INNER JOIN dalam SQL Server?

Patricia Arquette
Patricia Arquetteasal
2025-01-07 00:11:41964semak imbas

How to Delete from Multiple Tables with INNER JOIN in SQL Server?

Memadam daripada Berbilang Jadual dengan INNER JOIN dalam SQL Server

Dalam MySQL, pemadaman daripada berbilang jadual menggunakan INNER JOIN boleh dicapai dengan sintaks :

DELETE t1,t2 
FROM table1 AS t1 
INNER JOIN table2 t2 ...
INNER JOIN table3 t3 ...

Walau bagaimanapun, SQL Server tidak menyokong sintaks ini. Sebaliknya, anda boleh menggunakan jadual pseudo "dipadamkan" untuk mencapai hasil yang serupa:

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;

Dengan menggunakan jadual pseudo "deleted.id", anda boleh melakukan pemadaman bertingkat pada jadual berkaitan, memastikan data integriti.

Alternatif Pendekatan:

  • Pencetus: Anda boleh mencipta pencetus pada jadual1 yang memadamkan baris secara automatik daripada jadual berkaitan (jadual2 dan jadual3). Ini memastikan ketekalan tetapi memerlukan konfigurasi tambahan.
  • Kekunci Asing Berlatarkan: Konfigurasi kekunci asing berlatarkan antara jadual yang terlibat untuk mengendalikan pemadaman secara automatik.

Akhirnya, yang paling pendekatan yang sesuai bergantung pada keperluan khusus sistem anda.

Atas ialah kandungan terperinci Bagaimana untuk Memadam daripada Berbilang Jadual dengan INNER JOIN dalam SQL Server?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn