【发布时间】:2015-11-11 03:04:05
【问题描述】:
需要一个在删除时运行的触发器。 我写的代码不起作用:它正在触发触发器但没有插入任何记录。
我希望它在审计表中插入要删除的行。
我的代码:
CREATE TRIGGER [EXERCISE].[delete_trigger] ON [EXERCISE].[Fact_Sales]
AFTER DELETE
AS
INSERT INTO [EXERCISE].[Fact_Sales_Audit](City_ID,Product_ID,Time_ID,Created_Date,Updated_Date)
SELECT F.City_ID,F.Product_ID,F.Time_ID,F.Created_Date,F.Updated_Date
FROM [EXERCISE].[Fact_Sales] F
JOIN deleted D
ON F.Fact_Sales_ID = D.Fact_Sales_ID
PRINT 'Deleted row entered.'
它不工作。我怀疑的原因是 - 在触发触发器之前,该行已从表中删除,这就是它无法加入并因此无法插入任何记录的原因。但是当我调试和打印消息时,我可以看到触发发生在删除之前。
谁能解释一下这个触发器是如何工作的?
【问题讨论】:
-
如果你想确认,你可以将触发器转换为删除之前并执行,如果行没有被插入,因为你说它会被插入。
标签: sql sql-server triggers sql-server-2012