mysql 语法错误1422 修改

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