0

こんにちは皆さん、MySQL テーブルのトリガーを作成して、値がテーブルに挿入された後、列が値 *selling_priceexp_salesに設定されるようにしようとしていますが、次のエラーが発生します。qnty_received

エラー 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 に答える