【发布时间】:2020-09-23 11:14:48
【问题描述】:
如果emailstudio 列被更新,我在下面编写了插入值的触发器。此列可以是 0 或 1。
如何编写触发器,使其仅在 emailstudio 列从 0 更改为 1 时触发,而不是在它已经为 1 时触发?
谢谢
ALTER TRIGGER [dbo].[RM_Est_Email_Trigger]
ON [dbo].[K3_BriefHeader]
AFTER UPDATE
AS
BEGIN
SET NOCOUNT ON;
DECLARE @estimate int, @Email_Date datetime, @status int, @emailstudio bit
SET @estimate = (SELECT Estimate from inserted)
set @Email_Date = GETDATE()
SET @status = (SELECT Status from inserted)
SET @emailstudio = (SELECT EmailStudio from inserted)
IF UPDATE (EmailStudio)
BEGIN
INSERT INTO [dbo].[K3_EstimateEmailDate] ([Estimate], [Email_Date],[Status], [EmailStudio])
VALUES (@estimate, @Email_Date, @status, @emailstudio)
END
END
【问题讨论】:
-
您的触发器刚刚损坏,因为您假设
inserted只有一行。我建议您删除此问题并查看有关编写问题的 SQL Server 文档。如果您仍然有问题,请提出一个新问题,并带有至少可能起作用的触发器。 -
感谢礼貌回复!触发器确实有效。我在更改后记录 K3_Briefheader 表中的所有值。感谢您的帮助戈登
-
。 .如果同时插入多行,它将不起作用。
inserted有一行的假设是触发器中的致命错误。 -
一次只插入一行。
标签: sql-server tsql database-trigger