mysql - 为什么这个MySQL触发器不能正常执行?

标签 mysql wordpress triggers

我正在为客户安装 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/

相关文章:

wordpress - 为本地交付启用多个选项Woocommerce

postgresql - 如何在 PostgreSQL 中使用触发器在表中插入新行时创建新模式?

triggers - 在 Active Directory 更改时运行脚本

php - SQL TRIM 特定字段(和变量集)中的所有值

sql-server - 删除触发器不起作用

mysql - 在 m1 处理器中运行的 Docker 镜像

mysql - 无法连接到通过 docker-compose 创建的 MySQL docker 容器

java - 使用 Java 连接到 MySql - SSL 连接

php - MySQL如何实现层级数据的级联删除?

php - 提高 wp-admin 面板性能的建议