這是我第一次使用IF Exists和BEGIN TRANSACTION。我在'If Exists'部分'附近有錯誤的語法')和'End'末尾的'Transaction'附近的語法錯誤。如果重複的條目存在,並且如果存在錯誤回滾事務並返回錯誤或返回@@ RowCount,我不知道應該選擇哪一個,這樣可能會有人糾正我的過程並使其請對其進行任何調整。SQL事務重複條目
BEGIN TRANSACTION
IF EXISTS (SELECT * FROM Forums WHERE Title = @Title)
BEGIN
RAISERROR ('Duplicate Entry', 16, 1)
END
ELSE
BEGIN
INSERT INTO Forums(AddedBy, AddedDate, Title, Description,
ParentID, Moderated, ImageUrl, UpdatedBy, UpdatedDate, Active, Importance)
VALUES(@AddedBy, @AddedDate, @Title, null, null, False, null, null, null, True, 0)
RETURN @@ROWCOUNT
END
IF @@ERROR <> 0
BEGIN
ROLLBACK TRANSACTION
RETURN @@ERROR
END
END TRANSACTION
兩個快速意見:(1)'END TRANSACTION'無效。 (2)您應該使用輸出參數而不是'RETURN'將'@@ ROWCOUNT'發送回客戶端。 'RETURN'用於錯誤代碼,而不是數據。如果您只想返回插入成功,則返回1或某個特殊數字以指示成功。 – 2012-02-08 02:45:08