我让这个触发器在另一个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试图解决这个问题。
答案 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有很多限制,除非我们已经知道您的环境不受任何影响,否则通常只会浪费精力。限制。