Scenariusz:
Z poprzednich postów dowiadujemy się, że jeśli mamy Ograniczenie klucza obcego z ustawieniem domyślnym i spróbujemy zaktualizować wartość w kolumnie w tabeli referencyjnej, która jest używana jako kolumna referencyjna w ograniczeniu klucza obcego, otrzymujemy błąd. Omówiliśmy wiele sposobów radzenia sobie z tą sytuacją, sprawdź ten link.Ograniczenie klucza obcego zapewnia opcję ustawienia akcji kaskadowej, możemy utworzyć ograniczenie klucza obcego z aktualizacją kaskadową.
Jeśli używana jest aktualizacja ustawień kaskadowych, gdy aktualizujemy wartość w tabeli z odniesieniem , zaktualizuje ona również wartość w kolumnie tabeli nadrzędnej (tabela kluczy obcych).
Przetestujmy ten scenariusz. Utwórz dwie tabele dbo.Klient i dbo.Zamówienia z relacją klucza obcego według podanego 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 UPDATE CASCADE
)
--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źmy dane w tabelach za pomocą select query
![]() |
| Jak utworzyć ograniczenie klucza obcego za pomocą kaskadowej aktualizacji w SQL Server |
Uruchommy naszą instrukcję aktualizacji dla CustomerId w tabeli dbo.Customer i zobaczmy, czy aktualizuje ona również wartość kolumny w dbo.Orders dla Customer_id.
update dbo.Customer
set Customerid=100 Sprawdźmy jeszcze raz dane w naszych tabelach
![]() |
| Jak włączyć aktualizację kaskadową z ograniczeniem klucza obcego w SQL Server |
Jak widać, wartość jest aktualizowana również w kolumnie dbo.Orders.Customer_id.
Prezentacja wideo:Jak utworzyć ograniczenie klucza obcego za pomocą ON UPDATE CASCADE w programie SQL Server

