0
我已經分別爲INSERT和UPDATE創建了觸發器。在Schema1中插入時,觸發器將在Schema2中插入一行。表:SQL Server 2008中的觸發器
- Schema1.Temp1
- Schema2.Temp2
觸發創建成功。
但是,當我在Temp1
插入數據時,它給我錯誤Temp2
- 重複鍵。 Temp2
對另外兩個表格有限制。什麼可能導致這種情況,以及如何解決?
我已經分別爲INSERT和UPDATE創建了觸發器。在Schema1中插入時,觸發器將在Schema2中插入一行。表:SQL Server 2008中的觸發器
觸發創建成功。
但是,當我在Temp1
插入數據時,它給我錯誤Temp2
- 重複鍵。 Temp2
對另外兩個表格有限制。什麼可能導致這種情況,以及如何解決?
當你的觸發器被調用時,試着在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現有。
告訴我,如果沒關係
我不認爲這個問題與觸發器有任何關係。你只是插入重複的值。錯誤顯示違反了哪個約束。 – 2011-06-01 00:43:06
請更新'Temp2'的'CREATE TABLE'語句。停止重複數據是一件好事(tm) - 聽起來就像你正在設置一個「可憐的人」複製,當有更好的選擇取決於你真正想要這些觸發器做什麼。 – 2011-06-01 01:10:00
你能告訴我們** Table2的結構(列,它們的數據類型,你在表上有什麼索引)以及你的觸發器用來插入數據的語句,以及** complete和exact **錯誤信息你越來越? – 2011-06-01 04:46:25