0

我正在尝试设置一个触发器,该触发器将在wp_meta填充时更新我拥有的另一个表(客户)。所以,基本上,当数据被添加到时wp_meta,我想要customers更新表中的某些字段。例如,当first_namelast_name在 中更新时wp_meta,我想要first_namelast_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. 我不知道如何从密钥中获取价值。

4

2 回答 2

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      

(未测试...)

于 2013-10-17T22:09:08.650 回答
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;
于 2013-10-17T23:11:09.480 回答