sql触发器不工作/更新表

时间:2013-10-09 21:11:35

标签: sql-server-2008 triggers

我让这个触发器在另一个sql server / database上工作正常..现在它什么也没做,我需要设置的任何先决条件或想法为什么这不起作用.. SQL Server 2008

create trigger Autoupdate6 -- Creating Trigger
On NumericSamples
For Insert
As
Insert Into BM1OILT
Select SampleDateTime, SampleValue From NumericSamples 
Where TagID = 8 and UpdateC = 0
UPDATE NumericSamples set UpdateC = 1 WHERE TagID = 8
go

谢谢,

想出来,插入到表中的程序正在进行批量插入,通过传递触发器来运行。使用作业而不是触发器。再次感谢Aaron Bertrand试图解决这个问题。

1 个答案:

答案 0 :(得分:0)

这将阻止触发器尝试对整个表进行操作:

CREATE TRIGGER dbo.Autoupdate6
ON dbo.NumericSamples
FOR INSERT
AS
BEGIN
  INSERT INTO dbo.BM1OILT(...column names here please...)
    SELECT SampleDateTime, SampleValue FROM inserted
    WHERE TagID = 8 AND UpdateC = 0;

  UPDATE n SET UpdateC = 1
    FROM dbo.NumericSamples AS n
    INNER JOIN inserted AS i
    ON n.SampleDateTime = i.SampleDateTime
    WHERE n.UpdateC = 0 AND n.TagID = 8;
END
GO

您可以使用OUTPUT子句将此折叠为一个语句,但是对可组合DML有很多限制,除非我们已经知道您的环境不受任何影响,否则通常只会浪费精力。限制。