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