【问题标题】:Trigger insert -doesn't fire on real table with where clause触发器插入 - 不会在带有 where 子句的真实表上触发
【发布时间】:2012-10-26 04:45:29
【问题描述】:

您好,我创建了在测试字段上正常工作的触发器插入 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],[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

但是当触发器设置在 MS SQL Server 2005 的真实表上时,它只会在我从代码中删除时触发

其中 [Repair_Error] 在 (400,300) 中且 c.idKard 不在(从 dbo.eksport 中选择 idKard)

【问题讨论】:

    标签: tsql triggers insert


    【解决方案1】:

    我们测试了触发器,它在没有:

    where [Repair_Error] in (400,300) 
    

    但它适用于:

    where c.idKard not in (select idKard from dbo.eksport)
    

    触发器必须工作with where [Repair_Error] in (400,300)

    【讨论】:

      猜你喜欢
      • 2016-08-25
      • 2013-09-22
      • 2013-06-11
      • 2013-01-09
      • 1970-01-01
      • 2013-12-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多