Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Jak utworzyć ograniczenie klucza obcego za pomocą ON DELETE CASCADE w SQL Server — SQL Server / TSQL Tutorial, część 80

Scenariusz:

Pracujesz jako programista SQL Server, musisz utworzyć dwie tabele z relacją podstawowy-klucz obcy. Chcesz utworzyć ograniczenie klucza obcego z ustawieniem, czy rekord zostanie usunięty z tabeli odniesienia (tabela kolumn klucza podstawowego), powinien zostać również usunięty z tabeli nadrzędnej (tabela ograniczeń klucza obcego).

Rozwiązanie:

SQL Server pozwala nam użyć ustawienia z ograniczeniem klucza obcego o nazwie On DELETE CASCADE. Jeśli ta reguła zostanie zaimplementowana, za każdym razem, gdy rekord zostanie usunięty z tabeli odniesienia (tabela kolumn klucza podstawowego), zostanie on również usunięty z tabeli nadrzędnej (tabela ograniczeń kluczy obcych).
Przetestujmy ten scenariusz za pomocą poniższego skryptu.
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')
 
 
 Sprawdź dane w tabelach za pomocą zapytania wybierającego.
Jak włączyć opcję ON Delete CASCADE z ograniczeniem klucza obcego w SQL Server

Usuńmy wiersz z tabeli, do której istnieje odwołanie (tabela kolumn kluczy podstawowych) i zobaczmy, czy usuwa się również z tabeli nadrzędnej (tabela ograniczeń kluczy obcych)

    --Delete the Record from Referenced Table(PK Column Table)
    Delete from dbo.Customer
    where CustomerId=1


Sprawdź ponownie tabele, aby zobaczyć, czy rekord został usunięty z obu tabel z powodu ON Delete Cascade rule on Foreign Key Constraint.
Jak używać ON Delete Cascade do usuwania rekordów z wielu tabel w tabeli SQL Server

Jak widać, rekordy są usuwane z obu tabel ze względu na regułę ON DELETE CASCADE ograniczenia klucza obcego.

Prezentacja wideo:Jak utworzyć ograniczenie klucza obcego za pomocą funkcji ON DELETE CASCADE w programie SQL Server
  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Recursive CTE:Znajdowanie obiektów połączonych przez właściwość

  2. Przykład wstawiania SQL Server

  3. Jak działa RANK() w SQL Server

  4. Podłączanie SQL Server do bazy danych Java

  5. Jak działa funkcja LEFT() w programie SQL Server (T-SQL)