gpt4 book ai didi

Mysql触发器在另一个表中插入记录后更新可用余额

转载 作者:行者123 更新时间:2023-11-29 02:55:45 25 4
gpt4 key购买 nike

我在mysql数据库中有两张表,一张是账户主表,另一张是账户交易表。在交易表上插入/更新/删除时,我必须更新账户主表中的可用余额和最后交易日期(账户主表包含超过 1 个账户)。有可能用触发器吗?我尝试使用以下触发器。但是触发器没有被执行,出现语法错误(MSG 1064 LINE 30 MY SQL DB ERROR)。如果这可以通过触发器处理,请帮助解决。

    DELIMITER $$
CREATE TRIGGER wlt_bal_upd_insert AFTER INSERT ON wallet_txns
FOR EACH ROW
BEGIN
UPDATE wallet_accounts
SET wlt_bal_available = select sum(IF(wlt_txn_type = 'Expense', -wlt_txn_amount, wlt_txn_amount))from wallet_txns where wlt_name = new.wlt_name,wlt_last_txn_date = select MAX(wlt_txn_date)from wallet_txns where wlt_name = NEW.wlt_name
WHERE wlt_holder_id = NEW.wlt_holder_id
and wlt_name = new.wlt_name;
END $$
DELIMITER ;

最佳答案

我只是忘了放括号 ()。它现在工作。这是修改后的代码。

DELIMITER $$
CREATE TRIGGER wlt_bal_upd_insert AFTER INSERT ON wallet_txns
FOR EACH ROW
BEGIN
UPDATE wallet_accounts
SET wlt_bal_available = (select sum(IF(wlt_txn_type = 'Expense', -wlt_txn_amount, wlt_txn_amount))from wallet_txns where wlt_name = new.wlt_name),wlt_last_txn_date = (select MAX(wlt_txn_date)from wallet_txns where wlt_name = NEW.wlt_name)
WHERE wlt_holder_id = NEW.wlt_holder_id
and wlt_name = new.wlt_name;
END $$
DELIMITER ;

关于Mysql触发器在另一个表中插入记录后更新可用余额,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30788024/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com