为什么这个MySQL触发器无法正常执行?

时间:2012-03-13 20:01:59

标签: mysql wordpress triggers

我正在为客户端进行wordpress安装。 他选择的电子商务插件与Wordpress用户无法很好地集成。 我想在wordpress中创建新的用户记录时,将新记录插入到插件的用户帐户系统中。 对我来说,似乎wp_users表上的一个触发器在插入之前将用户数据复制到插件表就可以了。很简单。 但是,在我的测试中,我无法获取wp_users表触发器来执行任何操作。如果触发事件为Before Insert或After Insert,则新用户帐户创建将挂起并阻止数据插入到wp_users。在更新前指定时,它允许在wp_users中插入数据,但不允许插入插件表。 在任何时候它都没有正确执行触发器。 这是我的代码:

DROP TRIGGER IF EXISTS  `user_update`//
CREATE TRIGGER `dbname`.`user_update`
AFTER INSERT
ON `wp_users` FOR EACH ROW
BEGIN
INSERT INTO `test_data_dump` (`username`, `password`, `email`, `first_name`, `created_at`) VALUES(user_login, user_pass, user_email, user_nicename, user_registered);
END

任何见解都有助于immensley。

1 个答案:

答案 0 :(得分:2)

问题在于这条线。当您引用新插入的数据时,需要使用单词new

INSERT INTO 'test_data_dump' ('username', 'password', 'email', 'first_name', 'created_at')
    VALUES (new.user_login, new.user_pass, new.user_email, new.user_nicename, new.user_registered);

编辑:假设您的所有表列和名称都匹配,则此语法应该有效:

DROP TRIGGER IF EXISTS user_update;

CREATE TRIGGER user_update AFTER INSERT ON wp_users
FOR EACH ROW BEGIN
    INSERT INTO test_data_dump ('username', 'password', 'email', 'first_name', 'created_at')
    VALUES (new.user_login, new.user_pass, new.user_email, new.user_nicename, new.user_registered); 
END;