我正在嘗試編寫一個觸發器,用於將新用戶添加到表中時執行。當用戶被添加時,我需要觸發器檢查表以查看用戶是否已經存在,如果存在,則吐出一條錯誤消息,指出用戶已經存在。否則,插入應該通過。用於檢查用戶是否在表中被讀取的SQL觸發器
ALTER TRIGGER tR_CustomerCheck ON CUSTOMER
FOR INSERT, UPDATE
AS
IF EXISTS
(SELECT *
FROM CUSTOMER AS C
JOIN inserted as I
ON C.UserID = I.UserID
WHERE C.UserID = I.UserID)
BEGIN
PRINT 'Customer already exists.';
ROLLBACK TRANSACTION;
RETURN;
END;
看來該行被插入,然後被檢查,所以它總是失敗。我相信它必須是一個簡單的解決方案,但我無法找到它。
爲什麼觸發器?客戶表的外鍵約束就足夠了。 – wildplasser 2012-02-26 18:16:09
我同意外鍵會更好/更易於維護,但在這種情況下,它必須是觸發器。 – THansenite 2012-02-26 18:21:06
我想你不能檢查前端的存在嗎? – 2012-02-26 18:32:17