2011-07-20 33 views
0

SQL Server 2008で同じDBに2つのテーブルがあります。最初に行を挿入すると、2番目のフィールドにコピーするフィールドが必要になります。私はそれをやっているトリガーを作ったが、問題は、2行を非常に高速に追加するときに、それらのうちの1つだけをコピーすることがあることである。挿入後SQL Server挿入行すべての行をコピーしません

私のコードで何が問題になっていますか?

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 

答えて

0

「非常に高速」とはまったく関係ありません。私の推測では、挿入が必ずしもtEmployeに参加していない行です。 (可能であれば)外部結合にして、これらのいわゆる欠落行が存在するかどうか、またはtable2のC_Logon列にnullがあるかどうかを確認してください(テーブルの奇妙な名前---このような難読化によって、可能な解決策をより困難にする)

+0

私は常に同じ2行のデータでテストしました。私はそれをゆっくりとするとうまくいきます。速くすると、最初のテーブルに2つのエントリがあり、2番目に1つのエントリがあります。そのため、私はINNER JOINが一致していて、C_Logonがnullではないことを知っています。私はこれをカードリーダーでテストしており、そこには2人のユーザーしかいません。 – Michal

関連する問題