使用 mysql 中另一个表中的类似数据更新新数据库表的语法


Syntax for updating new database table with similar data from another table in mysql

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

也许是这样的?

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;