【发布时间】:2014-12-09 09:19:22
【问题描述】:
我在尝试删除记录时尝试使此触发器工作。它的工作方式是,当有人试图删除一条记录时,它会回滚并将审计记录插入到 TbAudit 表中,顺便说一下,所有列都有一个 NOT NULL 约束。然而,事实证明它不会这样做,因为由于某种原因我不明白当我尝试删除记录时它会显示消息并回滚但是我在 select 语句中的所有变量都得到 NULL 值,即使我直接从“删除”表。请帮忙。
USE BdPlan
GO
CREATE TRIGGER TrAudit
ON Plan.TPlan
AFTER DELETE
AS
BEGIN
DECLARE @IdPlan = int,
@IdEmployee int,
@Month int,
@Year int
ROLLBACK
PRINT 'CANT DELETE RECORDS'
-- All variables are getting NULL
SELECT @IdPlan = D.IdPlan,
@IdEmployee = D.IdEmployee ,
@Month = D.Month,
@Year = D.Year
FROM deleted AS D
INSERT INTO BdAudit.dbo.TbAudit
VALUES
(
@IdPlan,
@IdEmployee,
@Month,
@Year,
SUSER_NAME(),
GETDATE()
)
END
【问题讨论】:
标签: sql triggers sql-server-2012