【发布时间】:2023-03-16 07:10:02
【问题描述】:
我正在尝试编写一个在将新用户添加到表时执行的触发器。添加用户时,我需要触发器检查表以查看用户是否已经存在,如果存在,则吐出一条错误消息,说明用户已经存在。否则,插入应该通过。
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;
似乎该行被插入,然后被检查,所以它总是失败。我确信它必须是一个简单的修复,但我无法确定它。
【问题讨论】:
-
为什么是触发器?客户表的外键约束就足够了。
-
我同意外键会更好/更容易维护,但在这种情况下,它必须是触发器。
-
我想你不能在前端检查存在?