Tsql 触发器插入-不使用where子句在实际表上触发
嗨,我创建了触发器插入,它在测试场上工作得很好 1.当我将数据复制到设置了触发器的表中时,或者使用代码插入。 插入内容如下所示:Tsql 触发器插入-不使用where子句在实际表上触发,tsql,triggers,insert,Tsql,Triggers,Insert,嗨,我创建了触发器插入,它在测试场上工作得很好 1.当我将数据复制到设置了触发器的表中时,或者使用代码插入。 插入内容如下所示: SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO Create TRIGGER sometr ON [dbo].[mpomiar] For INSERT AS Begin iNSERT INTO [Database].dbo.[eksport] ([Repair_Date],[idKard],[Position
SET ANSI_NULLS ON GO
SET QUOTED_IDENTIFIER ON GO
Create TRIGGER sometr ON [dbo].[mpomiar] For INSERT
AS
Begin
iNSERT INTO
[Database].dbo.[eksport] ([Repair_Date],[idKard],[Position],[error][Pos_X],[Pos_Y],[Pos_Z],[name],[model],[parent])
SELECT i.[Repair_Date],c.idKard,i.[Position],i.error,i.[Pos_X],i.[Pos_Y],i.[Pos_Theta],s.name, mo.Model, pn.Parent
FROM inserted i
inner join dbo.test t on i.idtst=t.idtst
inner join dbo.Kard c on t.idKard=c.idKard
inner join dbo.TFILE AS s ON t.idTFILE = s.idTFILE INNER JOIN
dbo.MACHINE AS mc ON t.idMC = mc.idMC INNER JOIN
dbo.PANEL AS p ON c.idPANEL = p.idPANEL INNER JOIN
dbo.PARENT AS pn ON i.idPARENT = pn.idPARENT INNER JOIN
dbo.MODEL AS mo ON pn.idMOD = mo.idMOD
where [Repair_Error] in (400,300) and c.idKard not in (select idKard from dbo.eksport)
end
但当在MSSQLServer2005中对real表设置触发器时,它仅在我从代码中删除时才会触发
其中400300中的[Repair_Error]和dbo.eksport中的c.idKard not选择idKard
我们测试了触发器,它在没有以下条件的情况下工作:
where [Repair_Error] in (400,300)
但它与:
where c.idKard not in (select idKard from dbo.eksport)
触发器必须与400300中的where[Repair_Error]一起工作