2012-08-17 70 views
0

嗨,我打算創建一個MySQL表的觸發器,以便在將值插入表後,列exp_sales設置爲qnty_received value * selling_price,但我是收到此錯誤:錯誤1193(HY000):未知的系統變量,同時創建一個觸發器

ERROR 1193 (HY000): Unknown system variable '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)更新了正確的價值?

回答

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

如果我unserstand corrctly 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; 
+1

我得到這個異常'java.sql.SQLException:無法更新存儲的函數/觸發器中的表'Store_info_table',因爲它已經被調用此存儲函數/觸發器的語句使用。' – ErrorNotFoundException 2012-08-17 13:13:57

+0

無法更新在同一張桌上寫的觸發器內的表。或者,你可以嘗試第二種方法。 – Omesh 2012-08-17 13:20:38

0

NEW關鍵字?

嘗試這一個 -

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

但是,我認爲你不應該這樣做,因爲你總是可以計算SELECT查詢「合計」值。

相關問題