YuAn9912 2022-05-15 13:45 采纳率: 66.7%
浏览 192
已结题

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

  • 写回答

0条回答 默认 最新

    报告相同问题?

    问题事件

    • 系统已结题 5月23日
    • 创建了问题 5月15日

    悬赏问题

    • ¥15 python中合并修改日期相同的CSV文件并按照修改日期的名字命名文件
    • ¥15 有赏,i卡绘世画不出
    • ¥15 如何用stata画出文献中常见的安慰剂检验图
    • ¥15 c语言链表结构体数据插入
    • ¥40 使用MATLAB解答线性代数问题
    • ¥15 COCOS的问题COCOS的问题
    • ¥15 FPGA-SRIO初始化失败
    • ¥15 MapReduce实现倒排索引失败
    • ¥15 ZABBIX6.0L连接数据库报错,如何解决?(操作系统-centos)
    • ¥15 找一位技术过硬的游戏pj程序员