由于错误,将不会创建MYSQL触发器

由于错误,将不会创建MYSQL触发器,mysql,triggers,phpmyadmin,Mysql,Triggers,Phpmyadmin,我试图在MYSQL 5.0.95中创建一个触发器,当在email字段中找不到@符号时,它可以防止插入。我知道除了触发器之外还有其他方法,但我真的很想了解触发器是如何工作的 CREATE TRIGGER triggerUsersEmail BEFORE INSERT ON Users FOR EACH ROW BEGIN IF (Users.email NOT LIKE '%@%') THEN DECLARE dummy INT; SELECT not a valid email addr

我试图在MYSQL 5.0.95中创建一个触发器,当在email字段中找不到@符号时,它可以防止插入。我知道除了触发器之外还有其他方法,但我真的很想了解触发器是如何工作的

CREATE TRIGGER triggerUsersEmail 
BEFORE INSERT ON Users 
FOR EACH ROW 
BEGIN 
IF (Users.email NOT LIKE '%@%') THEN
DECLARE dummy INT;
SELECT not a valid email address INTO dummy FROM Users WHERE 1=1
END IF;
END;$$ 
我在PHPMYADMIN中使用$$分隔符运行上述操作,但出现以下错误:

#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 'DECLARE dummy INT; SELECT not a valid email address INTO dummy FROM Users WHERE' at line 6
你试过这个吗

CREATE TRIGGER triggerUsersEmail BEFORE INSERT ON Users FOR EACH ROW BEGIN DECLARE dummy INT; IF (Users.email NOT LIKE '%@%') THEN SELECT not a valid email address INTO dummy FROM Users WHERE 1=1 END IF; END;$$ 在开始后声明变量

__编辑


这在我的服务器上起作用了

现在我得到1064-您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,了解使用near“电子邮件地址”的正确语法,其中1=1 END IF;在第7行结束实际上,我没有通过这个select查询得到您想要的。这似乎是非常错误的:您能否共享您的users表并告诉我们您想要做什么?doMYSQL 5.0没有信号,因此我试图通过抛出自己的错误来阻止插入。即使我将SELECT not a valid email address(选择无效电子邮件地址)从1=1的用户改为SET NEW.email='1'之类的有效地址5@5.com“它仍然抛出同样的错误。我的用户表是:您是否可以尝试选择带有引号1064的消息?您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以获得使用near'END IF的正确语法;在第8行结束 DELIMITER $$ CREATE TRIGGER triggerUsersEmail BEFORE INSERT ON users FOR EACH ROW BEGIN DECLARE dummy INT; IF (Users.email NOT LIKE '%@%') THEN SELECT "not a valid email address" INTO dummy FROM Users WHERE 1=1; END IF; END; $$