SQL Server插入触发器后不复制所有行

时间:2011-07-20 09:53:16

标签: sql-server triggers

我在SQL Server 2008上的同一个数据库中有两个表。当我向第一个数据库插入一行时,我希望将一些字段复制到第二个字段。我做了一个触发器,但问题是,有时当我非常快地添加2行时,它只复制其中一行。

我的代码出了什么问题?

USE [DB_NAME]
GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER TRIGGER [dbo].[triggerName]
   ON  [dbo].[table1]
   AFTER INSERT
AS 
BEGIN
SET NOCOUNT ON;

   INSERT INTO dbo.table2(L_UID, L_Mode, C_Name, C_Logon)
      SELECT ins.L_UID, ins.L_Mode, ins.C_Name, temp.C_Remark AS Logon FROM INSERTED AS ins
         INNER JOIN dbo.tEmploye AS temp
         ON (temp.L_UID = ins.L_UID)
      WHERE temp.C_Remark IS NOT NULL

END

1 个答案:

答案 0 :(得分:0)

它几乎肯定与“加速非常快”无关。我最好的猜测是你插入的行并不总是与tEmploye连接。尝试使它成为一个外连接(如果可能的话),看看你是否继续拥有这些所谓的缺失行,或者如果你在table2中的C_Logon列中得到null(表格的奇怪名称,我必须说 - 这样的混淆使得计算找出一个可能的解决方案更加困难)