Php 复杂MYSQL触发器
我试图在mysql中创建一个触发器,当另一个表(wp_usermeta)被填充时,它将填充一个新表(customers)。我知道这可能是一个糟糕的设计,但我所处的情况是,Php 复杂MYSQL触发器,php,mysql,database,wordpress,triggers,Php,Mysql,Database,Wordpress,Triggers,我试图在mysql中创建一个触发器,当另一个表(wp_usermeta)被填充时,它将填充一个新表(customers)。我知道这可能是一个糟糕的设计,但我所处的情况是,wp\u usermeta不会总是被填充,我需要确保客户总是拥有我需要的数据 要做到这一点,我认为创建触发器是实现这一点的最佳方式,但它根本不起作用 以下是我所拥有的: CREATE TRIGGER `update_customers` AFTER INSERT ON `wp_usermeta` FOR EACH R
wp\u usermeta
不会总是被填充,我需要确保客户总是拥有我需要的数据
要做到这一点,我认为创建触发器是实现这一点的最佳方式,但它根本不起作用
以下是我所拥有的:
CREATE TRIGGER `update_customers` AFTER INSERT ON `wp_usermeta`
FOR EACH
ROW BEGIN
INSERT INTO test_customers
SET test_customers.first_name = new.meta_value;
END
我这样做只是为了尝试将wp_usermeta
数据复制到customer
表中,但这不起作用。mysql
接受了该触发器,但是当我将数据添加到wp_usermeta
表时,没有发生任何事情
我遇到的一个问题是,我只希望将诸如名字、姓氏、地址等内容填充到客户
数据库中。wp\u usermeta
表如下所示:
如您所见,该表是用键/值对设置的。因此,我面临的问题是如何将wp\u usermeta.first\u name
传输给客户.first\u name
我对这类事情或数据库一般来说没有太多经验
下面是我尝试的另一个查询:
TRIGGER `update_customers` AFTER INSERT ON `wp_usermeta`
FOR EACH
ROW BEGIN
INSERT INTO test_customers SET test_customers.first_name = wp_usermeta.meta_value WHERE wp_usermeta.meta_key == first_name;
END
但这也不起作用。如果有人能解释如何确定meta_键
是否等于first_name
,然后将相应的wp_usermeta.meta_值
应用于客户。first_name
表,那就太好了
如果触发器不是完成我想做的事情的最佳方式,我也愿意接受建议 试试这样的方法:
在'wp\u usermeta'上插入后创建触发器'update\u customers'`
每行
开始
如果NEW.meta_key='first_name'和NEW.meta_值不为NULL,则
在test_客户(名字)值(NEW.meta_值)中插入;
如果结束;
结束;
这允许我设置触发器,但当我运行它时,wp\u usermeta
表中没有设置first\u name
字段,这是预期的吗?只有在插入wp\u usermeta时才会调用此触发器,并且first\u name不同于null。您试图完成的哪些工作不起作用?当我运行它时,它在test\u customer
表中创建了新行,但没有得到传入的值。我可能是打错了什么的。非常感谢你!!!我想这对我有用!!很好的回答:顺便问一下:)你是说当你在wp_usermeta中插入一条记录时,一条记录被插入到test_customer中,但是test_customer中的值为null?是的,更具体地说,first_name
值为null。它创建新行,但似乎不传递名字的值。我检查了变量和所有内容,确保所有内容都是正确的,但它似乎没有将值传递到新表中。