MySQL中的简单IF语句不起作用

时间:2015-04-10 11:02:26

标签: mysql

我有一个包含id列和name列的表格。

START TRANSACTION;
UPDATE Test SET name='test' where id=1;
SELECT ROW_COUNT() INTO @affected_rows;
IF (@affected_rows > 0) THEN
    COMMIT;
ELSE
    ROLLBACK;
END IF

似乎正在返回错误

  

您的SQL语法有错误;检查手册   对应于您的MySQL服务器版本,以便使用正确的语法   靠近'IF(affected_rows> 0)那么       COMMIT'在第1行0秒

目前正在运行MySQL 5.6.22

1 个答案:

答案 0 :(得分:2)

首先,if作为控制流表达式仅允许在编程块中使用 - 存储过程,触发器和函数。

其次,逻辑没有意义。如果没有行受到影响,则无需回滚事务。

指出documentation

  

存储程序的IF语句实现了一个基本的条件结构。

术语"存储的程序"意味着一些编程块。不要将此if与MySQL函数if()混淆,后者可用于查询。