在mysql触发器中..如何使用insert into和update查询

时间:2013-04-19 21:38:29

标签: mysql sql triggers insert-update

我有一个product_price_log表。我更新了product_price中更新新价格的位置 表

我正在使用触发器:

drop trigger if exists product_update; 

delimiter $$
CREATE TRIGGER product_update
BEFORE update ON w3xab_virtuemart_product_prices
FOR EACH ROW
BEGIN
DECLARE virtuemart_product_id int;
DECLARE old_product_price decimal(15,5) default 0;
DECLARE new_product_price decimal(15,5) default 0;
DECLARE price_update_date DATE;

IF (new.product_price <> old.product_price)
THEN 

INSERT into product_price_log
(virtuemart_product_id,old_product_price, new_product_price,  price_update_date)
VALUES (new.virtuemart_product_id, old.product_price, new.product_price, CURDATE())
ON DUPLICATE KEY UPDATE 
old_product_price = VALUES(old.product_price),
new_product_price = VALUES(new.product_price),
price_update_date = CURDATE();


END IF;
    END$$
    delimiter ;

现在没有错误..但是当我尝试更新价格时更新无效...只有插入工作

我设置 virtuemart_product_id 是主要关键 我不知道什么事情我完全陷入困境......无法理解为什么不更新..

1 个答案:

答案 0 :(得分:0)

我认为你不能VALUES(CURDATE()),因为它实际上不是列名。 试试price_update_date=CURDATE()