我正在尝试设置一个触发器,该触发器将在填充wp_meta
时更新我拥有的另一个表(客户)。所以,基本上,当数据添加到wp_meta
时,我希望更新customers
表中的某些字段。例如,当first_name
和last_name
在wp_meta
中更新时,我希望使用相同的信息更新first_name
和last_name
。
这是我到目前为止所拥有的:
CREATE TRIGGER update_customers AFTER UPDATE ON wp_usermeta
FOR EACH ROW
BEGIN
customers.first_name = wp_meta.first_name;
END
我不断收到语法错误,我想知道我做错了什么。我还将分隔符设置为 //
.
另一个问题是数据库wp_meta
基于键/值系统。所以你有wp_meta.metakey
和相关的wp_metavalue
.我不知道如何从键中获取值。
也许是这样的?
CREATE TRIGGER update_customers AFTER UPDATE ON wp_usermeta
FOR EACH ROW
BEGIN
update customers set customers.first_name = new.first_name where customers.id=new.id;
END
(未测试...
Lajos的答案是一个好的开始。但是,我要补充 (1) 触发器定义失败的原因是"BEGIN"和"END"关键字之间的 SQL 不是有效的 SQL 语句,并且 (2) 您还需要为 AFTER INSERT 事件创建一个触发器,否则您只会在更新wp_userdata表时获取客户数据, 最初插入记录时不是:
CREATE TRIGGER trig_wp_usermeta_after_update AFTER UPDATE ON wp_usermeta
FOR EACH ROW
BEGIN
update customers set customers.first_name = new.first_name where customers.id=new.id;
END;
CREATE TRIGGER trig_wp_usermeta_after_insert AFTER INSERT ON wp_usermeta
FOR EACH ROW
BEGIN
update customers set customers.first_name = new.first_name where customers.id=new.id;
END;