Scenario:
U werkt als SQL Server-ontwikkelaar, u moet twee tabellen maken met Primary -Foreign Key Relationship. U wilt een Foreign Key Constraint maken met de instelling als record wordt verwijderd uit de tabel waarnaar wordt verwezen (Primary Key Column Table), het moet ook worden verwijderd uit de bovenliggende tabel (Foreign Key Constraint Table).Oplossing:
SQL Server laat ons de instelling gebruiken met Foreign Key Constraint genaamd On DELETE CASCADE. Als deze regel is geïmplementeerd, wordt elke record die wordt verwijderd uit de tabel waarnaar wordt verwezen (kolomtabel met primaire sleutel), ook verwijderd uit de bovenliggende tabel (beperkingstabel voor externe sleutels).Laten we dit scenario testen met het onderstaande script.
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')
Controleer de gegevens in tabellen met de selectiequery.
Het inschakelen van ON Delete CASCADE-regel met Foreign Key Constraint in SQL Server |
Laten we de rij verwijderen uit de tabel waarnaar wordt verwezen (kolomtabel met primaire sleutel) en kijken of deze ook wordt verwijderd uit de bovenliggende tabel (beperkingstabel voor externe sleutels)
--Delete the Record from Referenced Table(PK Column Table) Delete from dbo.Customer where CustomerId=1
Controleer de tabellen opnieuw om te zien of het record uit beide tabellen is verwijderd vanwege de ON Cascade-regel verwijderen op de beperking van de externe sleutel.
Hoe ON Cascade verwijderen te gebruiken om records uit meerdere tabellen in SQL Server-tabel te verwijderen |
Zoals we kunnen zien, zijn de records uit beide tabellen verwijderd vanwege de ON DELETE CASCADE-regel van Foreign Key Constraint.
Videodemo:Hoe maak je een externe sleutelbeperking met ON DELETE CASCADE in SQL Server