シナリオ:
以前の投稿では、デフォルト設定の外部キー制約があり、外部キー制約の参照列として使用されている参照テーブルの列の値を更新しようとすると、エラーが発生することを学びました。この状況を処理する複数の方法について説明しました。このリンクを確認してください。外部キー制約には、カスケードアクションを設定するオプションがあり、カスケード更新を使用して外部キー制約を作成できます。
[カスケード設定の更新]を使用する場合、参照テーブルの値を更新すると、親テーブル(外部キーテーブル)列の値も更新されます。
このシナリオをテストしてみましょう。指定されたスクリプトを使用して、外部キー関係を持つ2つのテーブルdbo.Customerとdbo.Ordersを作成します
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) select query
を使用して、テーブル内のデータを確認しましょう。 |
| SQLServerで更新カスケードを使用して外部キー制約を作成する方法 |
dbo.CustomerテーブルのCustomerIdでupdateステートメントを実行し、Customer_idのdbo.Ordersの列値も更新されるかどうかを確認しましょう。
update dbo.Customer
set Customerid=100 テーブルのデータをもう一度確認しましょう
|
| SQLServerで外部キー制約を使用した更新カスケードを有効にする方法 |
ご覧のとおり、dbo.Orders.Customer_id列でも値が更新されています。
ビデオデモ:SQLServerでONUPDATECASCADEを使用して外部キー制約を作成する方法