mysql - 即使事务不完整,使用 InnoDB 引擎的 mysql 中的事务也会被保存吗?

标签 mysql sql database transactions

我正在学习 RDBMS 中的事务,我想我会用这段代码来测试它:

分隔符$$ 开始交易; 插入 test4 值 (0,2); 插入 test4 值 (2,2); 插入 test4 值 (3,2); 插入 test4 值 (4,2); 插入 est4 值 (4,2); 插入 test4 值 (6,2); 插入 test4 值 (7,2); 插入 test4 值 (8,2); 插入 test4 值 (9,2); 插入 test4 值 (10,2); 插入 test4 值 (11,2); 插入 test4 值 (12,2); 结尾; 分隔符;

我故意保留第五条插入语句不正确,以便我可以测试事务如何工作。当我执行查询时,MySQL 按预期抛出了一个错误,但直到第四次插入的所有查询仍然保存在表中!为什么会发生这种情况? 是的,我正在使用支持事务的 InnoDB 引擎。我使用MySQL 14.14版本。 另外,我想知道保存点有什么用?假设我在事务中使用保存点,以便在事务失败时可以回滚到上一个成功的事务保存点。交易因失败而终止后会发生什么?从那时起,保存点将发挥什么作用? 谢谢!

最佳答案

您可能想要检查自动提交:http://dev.mysql.com/doc/refman/5.0/en/commit.html

关于mysql - 即使事务不完整,使用 InnoDB 引擎的 mysql 中的事务也会被保存吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28516049/

相关文章:

MySQL来自两个表的数据: Adding column headings to output

mysql - 如何做 SUM 而不是 UNION

php - 我应该使用两个脚本还是一个? `wordwrap()` 怎么样?

mysql - 运行Mysql批处理文件时出错

mysql连接表,根据时间戳比较仅返回行

sql - 如何在对某些 SQL 行运行进程时锁定它们?

database - 直接访问数据库与网络服务

database - 如何在 filemaker pro 15 的下拉列表中进行过滤

php - 为我的用户表中的所有用户将负信用金额批量插入我的交易表的最有效方法是什么

java - BatchSqlUpdate - 如何获取自动生成的 key