2017-07-02 81 views
1

嘿所有,所以我已经创建了一个看起来像这样的表命名的产品:MYSQL触发器来填充新表

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

Product_log表是几乎相同的另一个表称为产品:

`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操作符 ,最后操作应该自动插入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

有至少这一点,你做错了:

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

你已经正确定义的变量data_operatoraction_per以前:

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

但在你插入指示你的报价,一拥而上这把它们变成了弦乐。你的指令应该是:

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

明白了。现在它的工作! @ThomasG – Sanam

+0

好:-)现在你的SO职责是:当他们回答你的问题时标记接受的答案 –