Szenario:
Sie arbeiten als SQL Server-Entwickler, Sie müssen zwei Tabellen mit Primär-Fremdschlüssel-Beziehung erstellen. Sie möchten eine Fremdschlüsseleinschränkung mit der Einstellung erstellen, ob der Datensatz aus der referenzierten Tabelle (Primärschlüssel-Spaltentabelle) gelöscht werden soll, er sollte nicht aus der übergeordneten Tabelle (Fremdschlüsseleinschränkungstabelle) gelöscht werden, stattdessen sollte der Wert auf Null aktualisiert werden.Lösung:
Wir können ON DELETE SET NULL mit der Foreign Key Constraint-Definition verwenden, um die obige Anforderung zu implementieren.Lassen Sie uns mit dem folgenden Skript ausführen.
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 SET NULL ) --insert sample data insert into dbo.Customer (CustomerId,FName, LName,SSN) values (1,'Aamir','Shahzad','000-000-00') insert into dbo.Orders (OrderItemName,OrderItemAmt,Customer_Id) values ('TV',1,1)
Überprüfen Sie die Daten in Tabellen mit der Auswahlabfrage
Erstellen einer Fremdschlüsseleinschränkung mit ON DELETE SET NULL in SQL Server |
Lassen Sie uns die Zeile aus der referenzierten Tabelle (Primärschlüssel-Spaltentabelle) löschen und prüfen, ob noch Datensätze in der übergeordneten Tabelle (Fremdschlüssel-Einschränkungstabelle) vorhanden sind und der Spaltenwert auf Null aktualisiert wurde.
--Delete the Record from Referenced Table(PK Column Table) Delete from dbo.Customer where CustomerId=1
Verwendung der Option ON DELETE SET NULL mit Foreign Key Constraint in SQL Server |
Wie wir sehen können, wurde der Datensatz aus der referenzierten Tabelle (Primärschlüssel-Spaltentabelle) gelöscht, ist aber immer noch in der übergeordneten Tabelle (Fremdschlüssel-Einschränkungstabelle) vorhanden, aber der Wert wird wie erwartet auf Null aktualisiert.
Videodemo:So erstellen Sie eine Fremdschlüsselbeschränkung mit der Option ON DELETE SET NULL in SQL Server