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

Jak utworzyć ograniczenie klucza obcego z opcją ON DELETE SET NULL w programie SQL Server — samouczek SQL Server / TSQL, część 81

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), nie powinien być usuwany z tabeli nadrzędnej (tabela ograniczeń klucza obcego), zamiast tego wartość powinna zostać zaktualizowana do wartości Null.

Rozwiązanie:

Możemy użyć ON DELETE SET NULL z definicją ograniczenia klucza obcego, aby zaimplementować powyższe wymaganie.
Wykonajmy 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 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)
 
 
 Sprawdź dane w tabelach za pomocą zapytania wybierającego 
Jak utworzyć ograniczenie klucza obcego za pomocą ON DELETE SET NULL w SQL Server


Usuńmy wiersz z tabeli odniesienia (tabela kolumn klucza podstawowego) i sprawdź, czy rekordy nadal istnieją w tabeli nadrzędnej (tabela ograniczeń kluczy obcych), a wartość kolumny została zaktualizowana do wartości Null.
    --Delete the Record from Referenced Table(PK Column Table)
    Delete from dbo.Customer
    where CustomerId=1

Jak używać opcji ON DELETE SET NULL z ograniczeniem klucza obcego w SQL Server

Jak widać, rekord został usunięty z tabeli odniesienia (tabela kolumn klucza podstawowego), ale nadal jest obecny w tabeli nadrzędnej (tabela ograniczeń kluczy obcych), ale wartość jest aktualizowana do wartości Null zgodnie z oczekiwaniami.

Wideo demonstracyjne:Jak utworzyć ograniczenie klucza obcego z opcją ON DELETE SET NULL w 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. Pobieranie daty w serwerze sql, CURRENT_TIMESTAMP vs GetDate()

  2. Wyrażenie regularne MSSQL

  3. Wewnętrzne elementy SQL Server:operatorzy problematyczni Pt. I – Skany

  4. Jak dodać grupę użytkowników Active Directory jako login w SQL Server

  5. Zmień przesunięcie strefy czasowej w wartości przesunięcia daty i godziny w programie SQL Server (T-SQL)