シナリオ:
SQL Server開発者として作業している場合は、プライマリキーと外部キーの関係を使用して2つのテーブルを作成する必要があります。レコードを参照テーブル(主キー列テーブル)から削除するかどうかを設定して外部キー制約を作成する場合は、親テーブル(外部キー制約テーブル)からも削除する必要があります。解決策:
SQL Serverでは、OnDELETECASCADEと呼ばれる外部キー制約の設定を使用できます。このルールを実装すると、参照テーブル(主キー列テーブル)からレコードが削除されるたびに、親テーブル(外部キー制約テーブル)からもレコードが削除されます。このシナリオを以下のスクリプトでテストしてみましょう。
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') selectクエリを使用してテーブルのデータを確認します。
|
| SQLServerで外部キー制約を使用してONDeleteCASCADEルールを有効にする方法 |
参照テーブル(主キー列テーブル)から行を削除し、親テーブル(外部キー制約テーブル)からも削除されるかどうかを確認しましょう
--Delete the Record from Referenced Table(PK Column Table)
Delete from dbo.Customer
where CustomerId=1 テーブルを再度チェックして、外部キー制約のONDeleteCascadeルールが原因で両方のテーブルからレコードが削除されているかどうかを確認します。
| ONDeleteCascadeを使用してSQLServerテーブルの複数のテーブルからレコードを削除する方法 |
ご覧のとおり、外部キー制約のON DELETE CASCADEルールにより、両方のテーブルからレコードが削除されています。
ビデオデモ:SQLServerでONDELETECASCADEを使用して外部キー制約を作成する方法