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

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

DDD
DDDasal
2025-01-07 06:09:41372semak imbas

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

Memadam daripada Berbilang Jadual dengan INNER JOIN dalam SQL Server

Tidak seperti MySQL, SQL Server tidak menyokong pemadaman daripada berbilang jadual menggunakan SERTAI DALAM. Walau bagaimanapun, anda boleh mencapai kesan yang sama dengan penyelesaian berikut:

Langkah 1: Gunakan Jadual Pseudo "Dipadamkan"

Buat jadual sementara yang dipanggil "@deletedIds" untuk menyimpan ID baris yang dipadamkan daripada yang pertama jadual:

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;

Langkah 2: Padam daripada Jadual Seterusnya

Gunakan jadual "@deletedIds" untuk memadam daripada jadual berikutnya:

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

delete from t3
from table3 as t3 ...

Langkah 3: Komitmen Transaksi

Komit transaksi untuk membuat perubahan kekal:

commit transaction;

Nota: Anda boleh mengeluarkan deleted.id daripada pernyataan padam kedua jika perlu untuk bergabung dengan jadual ketiga.

Pendekatan Alternatif: Pencetus

Pertimbangkan untuk menggunakan pencetus pada jadual1 yang memadamkan secara automatik daripada jadual2 dan jadual3 apabila baris dipadamkan daripada jadual1. Ini memastikan integriti rujukan dan menghapuskan keperluan untuk pemadaman manual.

Atas ialah kandungan terperinci Bagaimana untuk Memadam Baris 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