0

大家好,我打算为 MySQL 表创建一个触发器,以便在将值插入表后,将列exp_sales设置为qnty_received值 * sell_price 但我收到此错误:

错误 1193 (HY000): 未知系统变量 'exp_sales'

这是我的查询:

delimiter $$
Create trigger tsales after insert on Store_info_table
for each row
set exp_sales = qnty_received * selling_price;
END$$

有什么问题,创建触发器的最佳方法是什么,以便在插入数量和销售价格后,字段exp_sales(Total)更新为正确的值?

4

3 回答 3

2

如果我不正确地理解exp_sales是您要更新的列名:

delimiter $$
Create trigger tsales after insert on Store_info_table
for each row
    update Store_info_table
    set exp_sales = NEW.qnty_received * NEW.selling_price
    where id = NEW.id;
END$$

更好的方法是使用INSERT INTO ON DUPLICATE KEY UPDATE

INSERT INTO table_name(...)VALUES(...) 
       ON DUPLICATE KEY SET exp_sales = qnty_received * selling_price;
于 2012-08-17T12:38:52.683 回答
1

如果我理解正确,您想在插入后更新记录的字段。尝试

delimiter $$
Create trigger tsales after insert on Store_info_table
for each row
begin
    UPDATE Store_info_table 
    SET exp_sales = NEW.qnty_received * NEW.selling_price
    WHERE id = NEW.id;
END;
$$
于 2012-08-17T12:33:00.577 回答
0

你没有忘记 NEW 关键字吗?

试试这个——

SET NEW.exp_sales = NEW.qnty_received * NEW.selling_price;

但是,我认为你不应该这样做,因为你总是可以在 SELECT 查询中计算“总”值。

于 2012-08-17T13:52:22.057 回答