如何在phpmyadmin中创建触发器

时间:2015-07-24 01:34:19

标签: triggers phpmyadmin

当我尝试在phpmyadmin中创建触发器时出现此错误。我做错了什么?

SQL查询:

CREATE TRIGGER ins_social 
AFTER INSERT ON sa_users_social
FOR EACH ROW 
BEGIN 
INSERT INTO fsb2_users ( u_social_id, u_auth, u_nickname, u_email, u_avatar, u_signature, u_language, u_joined, u_sexe, u_rank_id ) 
VALUES ('NEW.social_id',  '1',  'username',  'email',  'photoURL',  'description',  'fr',  'CURRENT_TIMESTAMP',  'gender',  '0');

错误:

  

#1064 - 您的SQL语法出错;检查与MySQL服务器版本对应的手册,以获得正确的语法   靠近''在第5行

1 个答案:

答案 0 :(得分:0)

不喜欢存储过程,你不必把BEGIN ... END放在那里。你能删除BEGIN并再试一次吗?

或者,如果您需要将BEGIN放在那里,您可以这样做:

delimiter #
CREATE TRIGGER ins_social 
AFTER INSERT ON sa_users_social
FOR EACH ROW 
BEGIN 
    INSERT INTO fsb2_users ( u_social_id, u_auth, u_nickname, u_email, u_avatar, u_signature, u_language, u_joined, u_sexe, u_rank_id ) 
    VALUES ('NEW.social_id',  '1',  'username',  'email',  'photoURL',  'description',  'fr',  'CURRENT_TIMESTAMP',  'gender',  '0');
END#
delimiter ;

另一个可能的错误是你在每个值周围放置单引号,这使它们作为varchars传递。在声明中,我猜u_social_id是一种数字类型,对吗?因此,您将varchar值传递给数字类型字段,这是一个问题。由于您没有在此处发布表结构。这只是猜测。 :)