Scénář:
Pracujete jako vývojář SQL Serveru, potřebujete vytvořit dvě tabulky se vztahem primárního a cizího klíče. Chcete vytvořit omezení cizího klíče s nastavením, zda bude záznam smazán z referenční tabulky (tabulka sloupců primárního klíče), neměl by být odstraněn z nadřazené tabulky (tabulka omezení cizího klíče), místo toho by měla být hodnota aktualizována na Null.Řešení:
K implementaci výše uvedeného požadavku můžeme použít ON DELETE SET NULL s definicí omezení cizího klíče.Pojďme provést pomocí níže uvedeného skriptu.
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) Zkontrolujte data v tabulkách pomocí výběrového dotazu
![]() |
| Jak vytvořit omezení cizího klíče pomocí ON DELETE SET NULL na serveru SQL |
Pojďme odstranit řádek z odkazované tabulky (Tabulka sloupců primárního klíče) a zkontrolujte, zda záznamy stále existují v nadřazené tabulce (tabulka omezení cizího klíče) a hodnota sloupce je aktualizována na hodnotu Null.
--Delete the Record from Referenced Table(PK Column Table)
Delete from dbo.Customer
where CustomerId=1 ![]() |
| Jak používat možnost ON DELETE SET NULL s omezením cizího klíče na serveru SQL |
Jak vidíme, záznam je odstraněn z referenční tabulky (Tabulka sloupců primárního klíče), ale stále je přítomen v nadřazené tabulce (Tabulka omezení cizích klíčů), ale hodnota je podle očekávání aktualizována na hodnotu Null.
Video ukázka:Jak vytvořit omezení cizího klíče pomocí možnosti ON DELETE SET NULL v SQL Server

