我有一個表有4個字段。Sql Server觸發器
Col1 Guid Primary-Key (FK to another table)
Col2 Guid Primary-Key (FK to another table)
Col3 Int Primary-Key
Col4 Int
現在我想這樣做:當用戶插入一個新的記錄,其具有相同的值作爲記錄在表之前存在類似如下:
有這樣記載:
X Y Z 2
新紀錄
X Y Z 3
更新現有的記錄下面:
X Y Z 5
並且還防止插入重複記錄。我寫了非常基本的觸發器。現在幫我完成這個。提前致謝。 ;)
CREATE TRIGGER [Tbl].[TriggerName]
ON [dbo].[Tbl]
AFTER INSERT, UPDATE
AS
BEGIN
SET NOCOUNT ON;
UPDATE [dbo].[Tbl]
SET [dbo].[Tbl].[Col4] += [Inserted].[Col4]
From [dbo].[Tbl] INNER JOIN [Inserted] ON [dbo].[Tbl].[Col1] = [Inserted].[Col1] AND
[dbo].[Tbl].[Col2] = [Inserted].[Col2]
WHERE [dbo].[Tbl].[Col3] = [Inserted].[Col3];
//How to prevent from inserting duplicate record?
END
如果你的主鍵是'(col1,col2,col3)',當'X Y Z 2'已經存在時,用戶將永遠不能插入'X Y Z 3'。這會違反你的主鍵。 – 2010-10-27 14:57:13
@Joe是的,你是對的,在做這個之前,我創建了這個主鍵來防止重複,但現在我想更新表中存在的記錄,所以在解決這個問題之後,我要去除主鍵或擴展到四列;) – Sadegh 2010-10-27 15:04:59
@Sadegh:你爲什麼試圖把它放在觸發器中?爲什麼你不能在你的代碼中測試存在,並在適當的時候更新/插入。 – 2010-10-27 15:12:26