mysql 错误1193(HY000):创建触发器时出现未知系统变量

dy1byipe  于 2023-02-15  发布在  Mysql
关注(0)|答案(4)|浏览(389)

大家好,我打算创建一个MySQL表的触发器,以便值插入到表中后,列exp_sales设置为qnty_received值 * selling_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$$

问题是什么?创建触发器的最佳方法是什么?这样,在插入Quantity和selling Price之后,exp_sales(Total)的字段就会更新为正确的值。

e1xvtsh3

e1xvtsh31#

如果我理解正确,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;
rsl1atfo

rsl1atfo2#

如果我没理解错的话,你想在插入后更新记录的一个字段。

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;
$$
n8ghc7c1

n8ghc7c13#

难道你忘了NEW关键字吗?
试试这个-

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

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

3hvapo4f

3hvapo4f4#

试试下面的代码,它对我很有效

create trigger tsales
after insert
on
Store_info_table
for each row
set new.exp_sales = new.qnty_received * new.selling_price;

但是,既然您希望自动计算exp_sales,为什么不使用before来代替after呢?

相关问题