2017-07-02 80 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職責是:當他們回答你的問題時標記接受的答案 –