0

こんにちは、私は 2 日間読んだのですが、解決策が見つかりません。そのため、挿入されたテーブルの最後のレコードから最も高いデータを重複なく挿入するトリガーを実行しようとしています。宛先テーブルがあります:

CREATE TABLE [dbo].[exported] ([Repair_Date] [datetime] NULL,
[idKards] [int] NULL,   [Position] [nvarchar](32) NULL,
[error] [int] NULL)

そしてトリガー:

Create TRIGGER [dbo].[tr2] ON [dbo].[mes] AFTER INSERT 
AS
INSERT INTO  dbo.[exported]    
    ([idKard],[Repair_Date],[Position],[Error],[name],[model_name],[parent_number]) 
    SELECT c.idKards,i.[Repair_Date],i.[Position],i.error,s.name, mo.Model_Name,  pn.Parent_Number FROM inserted i
          left outer join dbo.test t on i.idTest=t.idTest
          left outer join dbo.Kards k on t.idKards=k.idKards
    where [Repair_Error] in (300,400) 
    and K.idKards > (select max(idKards) from dbo.exported)

dbo.exported のデータ例 - このテーブルでは、最後の値を除いてすべての値が削除されています。

Repair_Date            idKards  Position    error    
2012-10-10 00:03:25    91996    IC4303          4   

データが別のテーブルからテーブル dbo.mes (トリガーがオンになっている) に挿入される場合 (以下のデータ例):

Repair_Date         idTest  Position error  
2012-10-10 00:00:58 91996   C524     1  
2012-10-10 00:00:56 91996   C522     1  
2012-10-10 00:00:54 91996   C537     1  
2012-10-10 04:34:31 95694   P1104    1  
2012-10-10 06:48:33 97405   P1104    1  
2012-10-10 01:31:17 93088   P1104    1  
2012-10-10 01:34:04 92747   P1104    1  
2012-10-10 12:49:22 102773  P1104    1  
2012-10-10 14:19:03 102773  P1104    4  
2012-10-15 16:27:24 149693  P1104    1

トリガーは、dbo.exported の最後の idTest を挿入されたデータと比較し、重複のないデータをテーブル dbo.exported に追加する必要があります。しかし、それはすべてを追加します:

Repair_Date idTest 位置エラー  
2012-10-10 00:03:25 91996 IC4303 4
2012-10-10 00:00:58 91996 C524 1  
2012-10-10 00:00:56 91996 C522 1  
2012-10-10 00:00:54 91996 C537 1  
2012-10-10 04:34:31 95694 P1104 1  
2012-10-10 06:48:33 97405 P1104 1  
2012-10-10 01:31:17 93088 P1104 1  
2012-10-10 01:34:04 92747 P1104 1  
2012-10-10 12:49:22 102773 P1104 1  
2012-10-10 14:19:03 102773 P1104 4  
2012-10-15 16:27:24 149693 P1104 1
4

1 に答える 1

0

挿入されたテーブルに対して左結合を使用しているため、クエリによって常に行が返されます

于 2012-11-12T14:17:51.247 に答える