Andomar とは異なり、私はトリガーを使用して満足していますが、制約チェックを削除するつもりはありません。 ではなく として実装する場合 実際の削除を実行する前に、他の行を null にリセットできます:
CREATE TRIGGER T_tabData_D
on tabData
instead of delete
as
set nocount on
update tabData set fiData = null where fiData in (select idData from deleted)
delete from tabData where idData in (select idData from deleted)
短く簡潔です。SQL Server が同じテーブルへの外部キー カスケードを処理できる場合は必要ありません (他の RDBMS では、ON DELETE SET NULL
を指定するだけでよい場合があります)。 外部キー制約の場合は YMMV)。