sql >> Database >  >> RDS >> Sqlserver

Hoe een externe sleutelbeperking te maken met ON UPDATE CASCADE in SQL Server - SQL Server / TSQL-zelfstudie, deel 79

Scenario:

In eerdere berichten hebben we geleerd dat als we een Foreign key Constraint met standaardinstelling hebben en we proberen de waarde in de kolom in de referentietabel bij te werken die wordt gebruikt als referentiekolom in de Foreign Key Constraint, we een foutmelding krijgen. We hebben meerdere manieren besproken om met de situatie om te gaan, controleer deze link.
Foreign Key Constraint biedt de optie om de Cascading-actie in te stellen, we kunnen Foreign Key Constraint creëren met Cascading Update.
Als Cascading-instellingen bijwerken wordt gebruikt, wordt de waarde in de kolom waarnaar wordt verwezen in de tabel met referenties ook bijgewerkt.
Laten we dit scenario testen. Maak twee tabellen dbo.Customer en dbo.Orders met Foreign Key-relatie door opgegeven 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 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)
 
 
 Laten we de gegevens in tabellen controleren met behulp van select query
Foreign Key Constraint maken met Update Cascade in SQL Server


Laten we onze update-instructie uitvoeren op CustomerId in de tabel dbo.Customer en kijken of deze ook de kolomwaarde in dbo.Orders voor Customer_id bijwerkt.
    update dbo.Customer
    set Customerid=100
 
 Laten we de gegevens nogmaals controleren in onze tabellen 
Updatecascadering inschakelen met externe sleutelbeperking in SQL Server

Zoals we kunnen zien, wordt de waarde ook bijgewerkt in de kolom dbo.Orders.Customer_id.


Videodemo:Hoe maak je een Foreign Key Constraint met ON UPDATE CASCADE in SQL Server
  1. waarde te lang voor type karakter variërend (N)

  2. Python- en SQLite-waarschuwingen

  3. Hoe TRUNCATE() werkt in MariaDB

  4. Een tafel controleren op tijdoverlap?