【发布时间】:2020-06-01 06:59:09
【问题描述】:
我正在为我的表创建一个触发器:- 银行 银行(pin、存款、取款、余额、accno*、sno) 和 平衡 余额(accno*,balance)
我想在插入银行表后更新余额表中的余额值。 我正在使用 MySQL 服务器 (wamp64 mysql8.0.18)
mysql> create trigger update_account
-> after insert on bank
-> begin
-> update balance as a
-> set a.balance=(case
-> when new.withdraw=1 then a.balance-new.withdraw
-> else a.balance+new.withdraw
-> end)
-> where a.accno = new.accno;
但上面的代码给了我以下错误:- ERROR 1064 (42000):您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以获取在 'update balance a 附近使用的正确语法 设置 a.balance = (case 当 new.withdraw=1 然后 a.balance - new.'在第 3 行
【问题讨论】:
-
您是否重新分配了DELIMITER?并且 FOR EACH ROW 丢失了......
-
bank.withdraw是否是伪布尔值(仅限 0 或 1 个值)? -
@Akina 不,我没有重新分配分隔符。请帮我解决这个问题。
-
@Akina bank.withdraw 包含取款金额。
-
withdraw 包含取款金额 如果是
amount,那你为什么要和1比较呢?
标签: mysql triggers sql-update create-table