MYSQL触发器填充新表

时间:2017-07-02 10:41:43

标签: mysql

嘿所有,所以我创建了一个名为products的表,如下所示:

`CREATE TABLE products
(
Prod_ID int(10),
Prod_name varchar(20),
Prod_qty varchar(20),
Prod_price int(20)
);`

Product_log表几乎与另一个名为products的表相同:

`CREATE TABLE product_log
(
Prod_ID int(10),
Prod_name varchar(20),
Action_Date date,
Updated_by varchar(30),
Action varchar(30)
);`

接下来我创建了一个名为products_after_insert的触发器,它应该在插入产品中的行后将数据插入到product_log表中。
插入触发器的要求是应该在product_log表中插入操作日期,并且应插入用户名,就像插入数据ex:data operator的人一样,  最后,动作应该自动插入到product_log表中,就像插入动作一样 这是我的触发器:

`DELIMITER //
CREATE TRIGGER products_after_insert
AFTER INSERT 
ON products 
FOR EACH ROW
BEGIN
DECLARE data_operator int(10);
DECLARE action_per varchar(200);
SET data_operator = 1;
SET action_per = 'INSERTION';
IF data_operator=1 THEN
INSERT INTO product_log(prod_id,prod_name,Action_date,Updated_by,Action)
VALUES(NEW.prod_id,NEW.prod_name,SYSDATE(),'data_operator','action_per');
END IF;
END; 
//DELIMITER;`

现在,我假设我正在构建错误的触发器,因为它似乎无法正常工作。

有谁知道我做错了什么?任何帮助将不胜感激!谢谢!

1 个答案:

答案 0 :(得分:0)

至少你做错了:

VALUES(NEW.prod_id,NEW.prod_name,SYSDATE(),'data_operator','action_per');

您之前已正确定义变量data_operatoraction_per

SET data_operator = 1;
SET action_per = 'INSERTION';

但是在你的INSERT指令中,你用引号将它们包围起来,然后将它们变成字符串。你的指示应该是:

VALUES(NEW.prod_id,NEW.prod_name,SYSDATE(),data_operator,action_per);