我已经实现了以下触发器:
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 块中,如果发生异常,我可以在其中回滚。这是一种好的做法吗?我应该为这种触发器做吗?
谢谢,杰森