3
有一个像这样的SQL单个sql语句在innodb中总是原子吗?
UPDATE xxx SET num = num -1 WHERE num> 0;
即使我没有交易声明,这是一个原子操作吗?
这个sql可以确保num字段总是非负的吗?
有一个像这样的SQL单个sql语句在innodb中总是原子吗?
UPDATE xxx SET num = num -1 WHERE num> 0;
即使我没有交易声明,这是一个原子操作吗?
这个sql可以确保num字段总是非负的吗?
如果启用自动提交,是的,它会自动执行。除非自动提交被禁用,否则每个语句都将是单个事务。
应该指出,默认情况下自动提交是启用的,因此为什么START TRANSACTION通常是启动事务所必需的。
这个sql可以确保num字段总是非负的吗? – jilen 2012-03-16 05:53:41
是的,会的。如果您收到此查询的负面结果,应检查以确保启用自动提交。 'select @@ autocommit;'应该返回1. – 2012-03-16 05:57:55
认为很多。自动提交实际上已启用。我将使用这个sql来防止当我的系统同时被发现时出现负数 – jilen 2012-03-16 06:45:26