我正在为客户安装 WordPress。 他选择的电子商务插件与 Wordpress 用户集成得不好。 当在 WordPress 中创建新用户记录时,我试图将新记录插入到插件的用户帐户系统中。 对我来说,似乎 wp_users 表上的触发器在插入之前将用户数据复制到插件表就可以解决问题。够简单的。 但是,在我的测试中,我无法让 wp_users 表触发器执行任何操作。如果触发事件是插入前或插入后,新用户帐户创建将挂起并阻止数据插入到 wp_users。当指定Before Update时,它允许在wp_users中插入数据,但不允许在Plugin表中插入数据。 它从来没有正确执行过触发器。 这是我的代码:
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有所帮助。
最佳答案
问题出在这一行。当您引用新插入的数据时,您需要使用单词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;
关于mysql - 为什么这个MySQL触发器不能正常执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9691201/