我正在尝试编写一个触发器,用于将新用户添加到表中时执行。当用户被添加时,我需要触发器检查表以查看用户是否已经存在,如果存在,则吐出一条错误消息,指出用户已经存在。否则,插入应该通过。用于检查用户是否在表中被读取的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