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