【发布时间】:2016-05-10 10:46:30
【问题描述】:
我要为我的表 User 创建一个触发器,在插入新行之前检查用户表中的重复(手机号码)。
我的用户表结构是:
USERID | FirstName | LastName | EmailID | Mobile
我正在使用下面的代码来创建触发器
DELIMITER $$
CREATE TRIGGER Before_Insert_User
BEFORE INSERT ON User
FOR EACH ROW
BEGIN
IF (NOT EXISTS(SELECT * FROM User WHERE Mobile = NEW.Mobile)) THEN
INSERT INTO User (USERID, FirstName, LastName, EmailID, Mobile,)
VALUES (NEW.USERID, NEW.FirstName, NEW.LastName, NEW.EmailID, NEW.Mobile);
END IF;
END$$
DELIMITER ;
但是这个触发器在插入新记录时给了我如下错误:
无法更新用户信息(无法更新存储函数/触发器中的表“用户”,因为它已被调用此存储函数/触发器的语句使用。)
我没有找到我做错的地方。
如何编写触发器来检查正在插入的值是否已存在于用户表中?
【问题讨论】:
-
为什么不对手机号码设置唯一限制?
-
@KP。这张桌子用了很长时间,现在我正在更换它。它存在许多无法删除的重复手机号码,因此我无法应用唯一约束。触发是好方法吗?