0

我正在尝试创建一个触发器,mysql当另一个表(wp_usermeta)被填充时,它将填充一个新表(客户)。我知道这可能是一个糟糕的设计,但我所处的情况wp_usermeta并不总是被填充,我需要确保它customers总是有我需要的数据。

为此,我认为创建触发器将是完成此任务的最佳方法,但它根本不起作用。

这是我所拥有的:

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表中添加数据时没有发生任何事情。

我遇到的一个问题是,我只希望将名字、姓氏、地址等内容填充到customers数据库中。该wp_usermeta表如下所示:

在此处输入图像描述

如您所见,该表设置有键/值对。所以我遇到的问题是将wp_usermeta.first_name转移到customers.first_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_key等于first_name然后将相应的wp_usermeta.meta_value值应用于customers.first_name表,那就太好了。

如果触发器不是完成我想做的事情的最佳方式,我也愿意接受建议。

4

1 回答 1

1

尝试这样的事情:

CREATE TRIGGER `update_customers` AFTER INSERT ON `wp_usermeta`
FOR EACH ROW 
BEGIN
  IF NEW.meta_key = 'first_name' AND NEW.meta_value IS NOT NULL THEN
    INSERT INTO test_customers(first_name) Values(NEW.meta_value);
  END IF;
END;

sqlfiddle demo

于 2013-10-19T21:24:10.527 回答