Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 复杂MYSQL触发器_Php_Mysql_Database_Wordpress_Triggers - Fatal编程技术网

Php 复杂MYSQL触发器

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

我试图在mysql中创建一个触发器,当另一个表(wp_usermeta)被填充时,它将填充一个新表(customers)。我知道这可能是一个糟糕的设计,但我所处的情况是,
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。它创建新行,但似乎不传递名字的值。我检查了变量和所有内容,确保所有内容都是正确的,但它似乎没有将值传递到新表中。