SQL Server でカスケード削除を使用するにはどうすればいいですか? 質問する

SQL Server でカスケード削除を使用するにはどうすればいいですか? 質問する

T1 と T2 という 2 つのテーブルがあり、これらはデータを含む既存のテーブルです。T1 と T2 の間には 1 対多の関係があります。T1 のレコードが削除されると、T2 の関連するすべてのレコードも削除されるため、SQL Server で連鎖削除を実行するには、テーブル定義をどのように変更すればよいでしょうか。

それらの間には外部制約が設定されています。テーブルを削除したり、T2 の削除を実行するトリガーを作成したりしたくありません。たとえば、従業員を削除すると、すべてのレビュー レコードも削除される必要があります。

T1 - 従業員、

Employee ID      
Name
Status

T2 - パフォーマンスレビュー、

Employee ID - 2009 Review
Employee ID - 2010 Review

ベストアンサー1

SQL Server Management Studio で既存の外部キーに「カスケード削除」を追加するには:

まず、外部キーを選択し、新しいクエリ ウィンドウで「DROP して作成...」を開きます。

ここに画像の説明を入力してください

次に、コマンドON DELETE CASCADEに以下を追加しますADD CONSTRAINT:

ん「実行」ボタンを押してこのクエリを実行します。

ちなみに、外部キーのリストを取得し、どの外部キーで「カスケード削除」が有効になっているかを確認するには、次のスクリプトを実行します。

SELECT 
   OBJECT_NAME(f.parent_object_id) AS 'Table name',
   COL_NAME(fc.parent_object_id,fc.parent_column_id) AS 'Field name',
   delete_referential_action_desc AS 'On Delete'
FROM sys.foreign_keys AS f,
     sys.foreign_key_columns AS fc,
     sys.tables t 
WHERE f.OBJECT_ID = fc.constraint_object_id
AND t.OBJECT_ID = fc.referenced_object_id
ORDER BY 1

DROPまた、外部キー制約のために特定のテーブルにアクセスできないが、どの FK が問題の原因になっているのかがわからない場合は、次のコマンドを実行できます。

sp_help 'TableName'

その記事の SQL は、特定のテーブルを参照するすべての FK をリストします。

これがすべて役立つことを願っています。

長い指を立てて申し訳ありません。ただ主張したかっただけです。

おすすめ記事