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 odstraněn z referenční tabulky (Tabulka sloupců primárního klíče), měl by být odstraněn také z nadřazené tabulky (Tabulka omezení cizího klíče).Řešení:
SQL Server nám umožňuje použít nastavení s omezením cizího klíče s názvem On DELETE CASCADE. Pokud je toto pravidlo implementováno, vždy, když je záznam odstraněn z referenční tabulky (Tabulka sloupců primárního klíče), bude odstraněn také z nadřazené tabulky (Tabulka omezení cizích klíčů).Pojďme otestovat tento scénář 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 CASCADE
)
--insert sample data
insert into dbo.Customer
(CustomerId,FName, LName,SSN)
values
(1,'Aamir','Shahzad','000-000-00') Zkontrolujte data v tabulkách pomocí výběrového dotazu.
![]() |
| Jak povolit pravidlo ON Delete CASCADE s omezením cizího klíče v SQL Server |
Pojďme odstranit řádek z odkazované tabulky (Tabulka sloupců primárního klíče) a uvidíme, zda se odstraní také z nadřazené tabulky (Tabulka omezení cizího klíče)
--Delete the Record from Referenced Table(PK Column Table)
Delete from dbo.Customer
where CustomerId=1 Znovu zkontrolujte tabulky a zjistěte, zda byl záznam odstraněn z obou tabulek kvůli pravidlu ON Delete Cascade na omezení cizího klíče.
![]() |
| Jak pomocí ON Delete Cascade odstranit záznamy z více tabulek v tabulce SQL Server |
Jak vidíme, záznamy jsou odstraněny z obou tabulek kvůli pravidlu ON DELETE CASCADE omezení cizího klíče.
Video ukázka:Jak vytvořit omezení cizího klíče pomocí ON DELETE CASCADE v SQL Server
