0
我在我的数据库中的表中有一个删除触发器,应该是将行插入到“审计”表中,但是当我从触发器表中删除行时,它们不会显示在审计中表。我有插入和更新触发器遵循这种相同的格式,工作正常,但我似乎无法得到这一个工作。这里是触发:删除触发器不工作
USE [OutageDev]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER TRIGGER [dbo].[tr_audOutageSummaryDelete]
ON [dbo].[Outage Summary]
AFTER DELETE
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
INSERT INTO dbo.[Outage Summary Audit]
(OutageSummaryID,
Dispatcher,
/*Removed columns for brevity*/
StateEmergency,
Comment,
AuditDateTime,
AuditUser,
AuditAction)
SELECT d.OutageSummaryID,
d.Dispatcher,
/*Removed columns for brevity*/
d.StateEmergency,
t.Comment,
GETDATE(),
SUSER_SNAME(),
'DELETE'
FROM deleted d
JOIN [Outage Summary] t
ON d.OutageSummaryID = t.OutageSummaryID
END
看起来它应该工作。行是否与删除的记录中的'OutageSummaryID'完全匹配?如果是的话,触发器肯定启用? –
感谢您的编辑。触发器已启用。 OutageSummaryID是表格的PK,所以我认为他们必须匹配。 – philthyfool
哦,我明白了。我没有意识到这个连接回到了基础表上。你根本不应该有'JOIN'。只需使用'd.Comment'而不是't.Comment'并摆脱连接。 –