2011-06-01 132 views
0

我已經分別爲INSERT和UPDATE創建了觸發器。在Schema1中插入時,觸發器將在Schema2中插入一行。表:SQL Server 2008中的觸發器

  • Schema1.Temp1
  • Schema2.Temp2

觸發創建成功。


但是,當我在Temp1插入數據時,它給我錯誤Temp2 - 重複鍵。 Temp2對另外兩個表格有限制。什麼可能導致這種情況,以及如何解決?

+1

我不認爲這個問題與觸發器有任何關係。你只是插入重複的值。錯誤顯示違反了哪個約束。 – 2011-06-01 00:43:06

+1

請更新'Temp2'的'CREATE TABLE'語句。停止重複數據是一件好事(tm) - 聽起來就像你正在設置一個「可憐的人」複製,當有更好的選擇取決於你真正想要這些觸發器做什麼。 – 2011-06-01 01:10:00

+0

你能告訴我們** Table2的結構(列,它們的數據類型,你在表上有什麼索引)以及你的觸發器用來插入數據的語句,以及** complete和exact **錯誤信息你越來越? – 2011-06-01 04:46:25

回答

0

當你的觸發器被調用時,試着在Table2上寫(如你所說的)。

Peraphs你沒有用Temp1中存在Temp1行的條件編寫INSERT查詢。

您的查詢必須是此類型:

INSERT INTO Table2 (field list) 
SELECT field list 
FROM inserted 
WHERE NOT EXISTS(SELECT 'key' in Table2 t2 where t2.id = inserted.field_of_key) 

這樣可以防止重複鍵,所以如果你想太多更新插入您的表2,你可以當鑰匙已經寫一個UPDATE stament現有。

告訴我,如果沒關係