1422, 'Explicit or implicit commit is not allowed in stored function or trigger.'
#CREATE TRIGGER UPDATE_MY_STOCK
AFTER INSERT ON trans
FOR EACH ROW
BEGIN
DECLARE SELL_OR_BUY INT;
DECLARE STOCK_ID INT;
DECLARE PRICE FLOAT;
DECLARE AMOUNT INT;
DECLARE AMOUNT_MY INT;
SELECT stock_id into @STOCK_ID FROM inserted;
SELECT sell_or_buy into @SELL_OR_BUY FROM inserted;
SELECT price into @PRICE FROM inserted;
SELECT amount into @AMOUNT FROM inserted;
SELECT volume into @AMOUNT_MY FROM my_stock WHERE stock_id = STOCK_ID;
IF SELL_OR_BUY = 1 THEN
IF NOT EXISTS (SELECT * FROM my_stock) THEN
INSERT INTO my_stock(volume, avg_price, profit) VALUES (1, @PRICE, 0);
ELSE
BEGIN
UPDATE a INNER JOIN b ON a.stock_id = b.stock_id SET valume = a.valume+1;
UPDATE a INNER JOIN b ON a.stock_id = b.stock_id SET avg_price = (avg_price * volume + b.amount * b.price) / a.volume;
END;
END IF;
ELSEIF SELL_OR_BUY = 0 THEN
IF AMOUNT > AMOUNT_MY THEN
ROLLBACK;
ELSE
BEGIN
UPDATE a INNER JOIN b ON a.stock_id = b.stock_id SET valume = a.valume-1;
UPDATE a INNER JOIN b ON a.stock_id = b.stock_id SET avg_price = (avg_price * volume - b.amount * b.price) / a.volume;
END;
END IF;
END IF;
END