sql >> Database >  >> RDS >> Sqlserver

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

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
  1. Kan ik een door een PDO voorbereide instructie gebruiken om een ​​identifier (een tabel- of veldnaam) of een syntaxissleutelwoord te binden?

  2. Maak een lijst van alle sequenties in een Postgres db 8.1 met SQL

  3. Hoe te verwijderen uit select in MySQL?

  4. Meerdere vertraagde replicatieslaves voor noodherstel met lage RTO