嘿所有,所以我创建了一个名为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;`
现在,我假设我正在构建错误的触发器,因为它似乎无法正常工作。
有谁知道我做错了什么?任何帮助将不胜感激!谢谢!
答案 0 :(得分:0)
至少你做错了:
VALUES(NEW.prod_id,NEW.prod_name,SYSDATE(),'data_operator','action_per');
您之前已正确定义变量data_operator
和action_per
:
SET data_operator = 1;
SET action_per = 'INSERTION';
但是在你的INSERT指令中,你用引号将它们包围起来,然后将它们变成字符串。你的指示应该是:
VALUES(NEW.prod_id,NEW.prod_name,SYSDATE(),data_operator,action_per);