シナリオ:
SQL Server開発者として作業している場合は、プライマリキーと外部キーの関係を使用して2つのテーブルを作成する必要があります。レコードが参照テーブル(主キー列テーブル)から削除される場合は、設定を使用して外部キー制約を作成します。レコードは親テーブル(外部キー制約テーブル)から削除しないでください。代わりに、値をNullに更新する必要があります。>
解決策:
ON DELETE SET NULLを外部キー制約定義とともに使用して、上記の要件を実装できます。以下のスクリプトを使用して実行しましょう。
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) Select query
を使用して、テーブルのデータを確認します。 |
| SQLServerでONDELETESETNULLを使用して外部キー制約を作成する方法 |
参照テーブル(主キー列テーブル)から行を削除し、レコードが親テーブル(外部キー制約テーブル)にまだ存在し、列値がNullに更新されているかどうかを確認しましょう。
--Delete the Record from Referenced Table(PK Column Table)
Delete from dbo.Customer
where CustomerId=1 |
| SQLServerの外部キー制約でONDELETESETNULLオプションを使用する方法 |
レコードが参照テーブル(主キー列テーブル)から削除されているが、親テーブル(外部キー制約テーブル)にはまだ存在していることがわかりますが、値は期待どおりにNullに更新されます。
ビデオデモ:SQLServerでONDELETESETNULLオプションを使用して外部キー制約を作成する方法