MySQL中的触发器
问题描述:
我正在尝试创建一个触发器,它将向ADMIN_EMAIL_DOMAINS表中插入一个新行。MySQL中的触发器
CREATE TRIGGER email_domain_insert AFTER INSERT ON USERS
FOR EACH ROW
BEGIN
IF NOT EXISTS (SELECT * FROM (SELECT DISTINCT SUBSTRING_INDEX(USR_EMAIL, '@', -1) as domain FROM USERS) as a WHERE a.domain = SUBSTRING_INDEX(NEW.USR_EMAIL, '@', -1)) THEN
INSERT INTO ADMIN_EMAIL_DOMAINS (DOMAIN_NAME, VISIBLE) VALUES (SUBSTRING_INDEX(NEW.USR_EMAIL, '@', -1), 1);
END IF;
END //
我想要做的是,每次我创建一个新用户,我会检查其电子邮件扩展,然后将其插入到ADMIN_EMAIL_DOMAINS表如果DOMAIN_NAME尚未存在。
我的问题是它,当我试图执行它
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 5
我缺少的东西了SQL的错误?
答
我可以建议你另一种方式 - 进行实地DOMAIN_NAME
独特,并尝试将新域到表ADMIN_EMAIL_DOMAINS
与IGNORE选项,例如 -
DELIMITER $$
CREATE TRIGGER email_domain_insert
AFTER INSERT
ON users
FOR EACH ROW
BEGIN
INSERT IGNORE INTO ADMIN_EMAIL_DOMAINS (DOMAIN_NAME, VISIBLE) VALUES (SUBSTRING_INDEX(NEW.USR_EMAIL, '@', -1), 1);
END
DELIMITER ;
有,即使它看起来正确 #1064一个MySQL错误 - 你在你的SQL语法错误;检查与您的MySQL服务器版本相对应的手册,在第5行的“'附近使用正确的语法 – user9507