删除父级时,我需要删除表的子级。常见的订单/详细信息示例。
我用这个来代替触发器:
CREATE TRIGGER trg_OderDelete
ON Oders
INSTEAD OF DELETE
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for trigger here
Delete from Details where IDOrder IN(select deleted.IDOrder from deleted)
Delete from Orders where IDOrder IN(select deleted.IDOrder from deleted)
END
GO
首先,我只尝试使用第一个删除语句,但只删除详细信息,而不是订单,所以我添加了第二个删除来删除订单。
我怀疑这是否正确。我的意思是,如果我删除订单时触发了触发器,为什么我要在触发器中添加删除语句来删除执行触发器的订单?
我也想知道这个:
1.-是交易吗?我的意思是,如果我删除了详细信息,并且由于某种原因无法删除订单,那么最终详细信息不会被删除?
2.- 当我删除订单时,此交易避免添加新的细节?想象一下,我想删除一个订单,在触发器中执行了第一次删除,详细信息,但在执行第二次删除,订单之前,其他用户尝试添加新的详细信息。是否添加此详细信息是因为订单在交易中被阻止?
谢谢。