Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Memadam Rekod daripada Berbilang Jadual Pelayan SQL Menggunakan INNER JOIN?

Bagaimana untuk Memadam Rekod daripada Berbilang Jadual Pelayan SQL Menggunakan INNER JOIN?

Barbara Streisand
Barbara Streisandasal
2025-01-07 07:10:40861semak imbas

How to Delete Records from Multiple SQL Server Tables Using INNER JOIN?

Memadam Rekod daripada Berbilang Jadual dengan INNER JOIN dalam SQL Server

Tidak seperti MySQL, SQL Server tidak secara langsung menyokong sintaks yang digunakan untuk memadam rekod daripada berbilang jadual menggunakan INNER JOIN. Walau bagaimanapun, penyelesaian boleh dicapai dengan memanfaatkan jadual pseudo "dipadamkan".

Langkah 1: Mulakan Jadual Sementara untuk Menyimpan ID yang Dipadamkan

begin transaction;

declare @deletedIds table ( id int );

Langkah 2: Padam daripada Jadual Pertama dan Output Dipadam ID

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;

Langkah 3: Padam daripada Jadual Kedua Menggunakan Jadual Sementara

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

Langkah 4: Padam daripada Jadual Tambahan (Pilihan)

delete from t3
from table3 as t3 ...

Langkah 5: Komited Transaksi

commit transaction;

Nota: Mengeluarkan ID yang dipadamkan daripada pemadaman pertama membolehkan anda terus menyertai untuk pemadaman seterusnya.

Pendekatan Alternatif: Pencetus

Sebagai alternatif, anda boleh mencipta pencetus pada jadual pertama untuk mengendalikan pemadaman rekod berkaitan dalam jadual lain. Pendekatan ini akan memastikan integriti data dalam transaksi tersirat. Walau bagaimanapun, ia memerlukan penyelenggaraan pencetus tambahan dan tidak menyokong syarat gabungan yang kompleks.

Atas ialah kandungan terperinci Bagaimana untuk Memadam Rekod daripada Berbilang Jadual Pelayan SQL Menggunakan INNER JOIN?. 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