Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

So erstellen Sie eine Fremdschlüsseleinschränkung mit ON UPDATE CASCADE in SQL Server - SQL Server / TSQL-Tutorial Teil 79

Szenario:

In früheren Beiträgen haben wir erfahren, dass wir einen Fehler erhalten, wenn wir eine Fremdschlüsseleinschränkung mit Standardeinstellung haben und versuchen, den Wert in der Spalte in der Referenztabelle zu aktualisieren, die als Referenzspalte in der Fremdschlüsseleinschränkung verwendet wird. Wir haben mehrere Möglichkeiten besprochen, mit der Situation umzugehen. Bitte überprüfen Sie diesen Link.
Foreign Key Constraint bietet die Option, die Cascading-Aktion festzulegen, wir können Foreign Key Constraint mit Cascading Update erstellen.
Wenn die Update Cascading-Einstellungen verwendet werden, wird beim Aktualisieren des Werts in der referenzierten Tabelle auch der Wert in der Spalte der übergeordneten Tabelle (Fremdschlüsseltabelle) aktualisiert.
Lassen Sie uns dieses Szenario testen. Erstellen Sie zwei Tabellen dbo.Customer und dbo.Orders mit Fremdschlüsselbeziehung durch gegebenes Skript

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 UPDATE CASCADE
    )


    --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)
 
 
 Lassen Sie uns die Daten in Tabellen überprüfen, indem Sie select query
verwenden
Erstellen einer Fremdschlüsseleinschränkung mit Update Cascade in SQL Server


Lassen Sie uns unsere Update-Anweisung auf CustomerId in der Tabelle dbo.Customer ausführen und sehen, ob sie auch den Spaltenwert in dbo.Orders für Customer_id aktualisiert.
    update dbo.Customer
    set Customerid=100
 
 Überprüfen wir die Daten noch einmal in unseren Tabellen 
So aktivieren Sie die Aktualisierungskaskadierung mit Fremdschlüsseleinschränkung in SQL Server

Wie wir sehen können, wird der Wert auch in der Spalte dbo.Orders.Customer_id aktualisiert.


Videodemo:So erstellen Sie eine Fremdschlüsselbeschränkung mit ON UPDATE CASCADE in SQL Server