我正在尝试设置一个触发器,用于在填充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
。我迷失了如何从钥匙中获取价值。
答案 0 :(得分:1)
也许是这样的?
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
(未经测试......)
答案 1 :(得分:1)
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;