mysql - 如何在过程中的 If 内执行多个查询?
问题描述
我正在尝试执行两个查询,将钱从一家银行“转移”到另一家银行(一家银行是一张表),但前提是新余额高于 0。sc_bank 和 sub_bank 是两个表,amountOfMoney、customerIDsc 和 customerIDsub 是过程中的参数。phpmyadmin 给了我多个 SQL sintax 错误,我做错了什么?
BEGIN
SELECT @A:=sub_bank.value FROM sub_bank WHERE customer_id = customerIDsub;
IF @A - amountOfMoney > 0 THEN
UPDATE sc_bank SET sc_bank.value = sc_bank.value + amountOfMoney WHERE sc_bank.customer_id = customerIDsc;
UPDATE sub_bank SET sub_bank.value = sub_bank.value - amountOfMoney WHERE sub_bank.customer_id = customerIDsub;
END IF
END;
编辑:这是 phpmyadmin 尝试执行以创建过程的函数,它似乎将 IF 放在第一次更新的 WHERE 语句中
CREATE DEFINER = `root`@`localhost` PROCEDURE `proceduro`(
IN `amountOfMoney` DECIMAL(6, 2),
IN `customerIDsc` INT(10),
IN `customerIDsub` INT(10)
) NOT DETERMINISTIC NO SQL SQL SECURITY DEFINER
BEGIN
SELECT
@A := sub_bank.value
FROM
sub_bank
WHERE
customer_id = customerIDsub; IF @A - amountOfMoney > 0 THEN
UPDATE
sc_bank
SET
sc_bank.value = sc_bank.value + amountOfMoney
WHERE
sc_bank.customer_id = customerIDsc;
UPDATE
sub_bank
SET
sub_bank.value = sub_bank.value - amountOfMoney
WHERE
sub_bank.customer_id = customerIDsub;
END IF
END;
解决方案
推荐阅读
- c# - 实体框架为数据库中的 varbinary 类型返回不同的值
- chart.js - 在加载数据和图表之前覆盖加载指示器
- python - if else 块上的 SQLAlchemy 混合属性
- c# - 开头的表达式调用给出了 AmbiguousMatch 异常
- real-time - 当实时系统违反其硬时间目标时会发生什么?
- c# - 无法将这种格式“1/29/2020 12:00:00 AM”的字符串解析为有效的 DateTime
- dns - 子域的附加 MX 记录
- java - First Auth Mifare Plus 卡
- spring-boot - Spring Boot SSL/HTTPS 使用嵌入式 Tomcat 设置,设置密码的最佳实践
- html-lists - open layers6: reproject epsg 28992 to epsg 4326