2016-10-27 81 views
1

有匹配行和列的問題我有Costumers表和Costumers_update表。我創建了一個交叉連接從Costumers表到Costumers_update表的字段的觸發器。我試圖正確地匹配行和列,但當我在Winform上從C#執行SELECT查詢時,我遇到了不匹配的情況。交叉在插入和更新時加入觸發器。從C#

查詢的意圖是從Costumers以前的信息到當前的某種日誌,這就是爲什麼我有觸發器。

CREATE TRIGGER TriggerModify 
ON Costumers AFTER UPDATE AS 
BEGIN 
    INSERT INTO Costumers_Update (
     CostumerID, 
     ModifyDate, 
     Name_New, 
     Email_New,  
     Name_Old, 
     Email_Old, 
     --etc 
    ) 
    SELECT [Old].ID, 
      GETDATE(), 
      [New].Name, 
      [New].Email, 
      [Old].Name, 
      [Old].Email, 
    FROM inserted AS [New] 
    CROSS JOIN 
    deleted AS [Old] 
END 

當我做一個SELECT或SELECT DISTINCT時,我得到了everyhing。

Costumers表structur與Costumers_update幾乎相同,只是[OLD]字段除外。

回答

0

我不確定你的意思是「不匹配所有的地方」。

但是,您正在執行CROSS JOIN,因此您可以在多條記錄中獲得「新」和「舊」值的每個組合。

我會建議你使用一個簡單的JOIN

FROM inserted [New] JOIN 
    deleted [Old] 
    [New].CustomerId = [Old].CustomerId 
+0

我的意思是,當我SELECT * FROM Costumers_Update ORDER BY ModifyDate DESC,我得到的不匹配。我想消除重複項並將[New]和[Old]數據行匹配到行。 – SoA

+0

@chrstie。 。 。這個版本可能有幫助。您可能在'Customers_Update'表中有一堆垃圾行。 –

+0

好的非常感謝幫助我嘗試一下。 – SoA