次のトリガーを実装しました。
CREATE TRIGGER [OnContactDeleted]
ON [TABLE].[Contact]
INSTEAD OF DELETE
AS
BEGIN
SET NOCOUNT ON
/*Store contact ID to variable*/
Update [TABLE].[Account] Set [PrimaryContactID] = null where [TABLE].[Account].[PrimaryContactID] = (Select ContactID from Deleted)
Delete from [TABLE].[Contact] where [TABLE].[Contact].[ContactID] = (Select ContactID from Deleted)
END
別のテーブルから一連の外部キーをクリアしてから、現在のレコードを削除します。これは、削除時に外部キーを null に設定しても機能しないためです。
私の質問は、このトリガーを try...catch ブロックにラップして、例外が発生した場合にロールバックできるようにすることです。それは良い習慣であり、この種のトリガーに対してそれを行う必要がありますか?
ありがとう、ジェイソン