Tình huống:
Bạn đang làm việc với tư cách là nhà phát triển SQL Server, bạn cần tạo hai bảng với Mối quan hệ chính -Foreign Key. Bạn muốn tạo Ràng buộc khóa ngoại với cài đặt nếu bản ghi sẽ bị xóa khỏi Bảng được tham chiếu (Bảng cột khóa chính), thì bản ghi đó cũng sẽ bị xóa khỏi Bảng mẹ (Bảng ràng buộc khóa ngoại).Giải pháp:
SQL Server cho phép chúng tôi sử dụng cài đặt có Ràng buộc khóa ngoài được gọi là On DELETE CASCADE. Nếu quy tắc này được thực hiện, bất cứ khi nào bản ghi bị xóa khỏi Bảng được tham chiếu (Bảng cột khóa chính), nó cũng sẽ bị xóa khỏi Bảng mẹ (Bảng ràng buộc khóa ngoại).Hãy thử nghiệm kịch bản này với tập lệnh dưới đây.
USE YourDatabaseName GO CREATE TABLE dbo.Customer ( Customerid INT PRIMARY KEY ,FName VARCHAR(100) ,LName VARCHAR(100) ,SSN VARCHAR(10) ) CREATE TABLE dbo.Orders ( OrderId INT Identity(1, 1) ,OrderitemName VARCHAR(50) ,OrderItemAmt INT ,Customer_id INT FOREIGN KEY REFERENCES Customer(CustomerId) ON DELETE CASCADE ) --insert sample data insert into dbo.Customer (CustomerId,FName, LName,SSN) values (1,'Aamir','Shahzad','000-000-00')
Kiểm tra dữ liệu trong bảng bằng cách sử dụng truy vấn chọn.
Cách bật BẬT Xóa quy tắc CASCADE với Ràng buộc khóa ngoài trong SQL Server |
Hãy xóa hàng khỏi Bảng được Tham chiếu (Bảng Cột khóa chính) và xem nó có xóa khỏi Bảng mẹ (Bảng ràng buộc khóa ngoại) không
--Delete the Record from Referenced Table(PK Column Table) Delete from dbo.Customer where CustomerId=1
Kiểm tra lại các bảng để xem liệu bản ghi có bị xóa khỏi cả hai bảng do quy tắc BẬT Xóa phân tầng trên Ràng buộc khóa ngoại hay không.
Cách sử dụng ON Delete Cascade để xóa các bản ghi khỏi nhiều Bảng trong SQL Server Table |
Như chúng ta có thể thấy rằng các bản ghi bị xóa khỏi cả hai bảng do quy tắc ON DELETE CASCADE của Ràng buộc khóa ngoài. Video giới thiệu
:Cách tạo Ràng buộc khóa ngoại bằng BẬT XÓA CASCADE trong SQL Server