mysql的事务是在什么时候开始生成的?
1 个回答
勇敢一点吧!我们不会比今年更年轻了。澜夜师兄在 MySQL 中,事务并不是在执行 `BEGIN` 语句时立即生成的。实际的事务在对数据进行增删改查等操作后才正式开启。以下是对此的详细说明和测试结果的整理: ### 事务的实际生成时机 1. **事务的开始** - 当你执行 `BEGIN` 语句时,实际上并没有正式开启一个事务。 `BEGIN` 只是告诉 MySQL,你即将开始一个事务。 - 事务真正开始是在对数据进行了增删改查等操作时。 2. **测试过程** - 测试过程中,执行 `BEGIN` 语句后并没有立即开启事务。 - 使用 `SELECT * FROM information_schema.INNODB_TRX` 查询当前正在执行中的事务,发现没有显示任何事务。 ### 具体测试步骤及结果 1. **执行 `BEGIN` 后查询当前事务** ```sql BEGIN; SELECT * FROM information_schema.INNODB_TRX; ```  - 结果显示没有任何事务,说明此时并未真正开启事务。 2. **在 `BEGIN` 后添加一条 `SELECT` 语句** ```sql BEGIN; SELECT * FROM your_table; // 示例查询语句 SELECT * FROM information_schema.INNODB_TRX; ```  - 结果显示有一个事务,说明在对数据进行了操作(即使是 `SELECT`)后,事务才正式开启。 ### 结论 在 MySQL 中,事务并不是在执行 `BEGIN` 语句时立即开启,而是在对数据进行了增删改查等操作后才正式生成。理解这一点有助于在使用事务时避免误解和错误操作。 ### 测试步骤总结 1. 执行 `BEGIN` 语句后,事务并未正式开启。 2. 执行数据操作(如 `SELECT`、`INSERT`、`UPDATE`、`DELETE`)后,事务才正式开启。 3. 使用 `SELECT * FROM information_schema.INNODB_TRX` 可以查看当前正在执行的事务,验证事务是否开启。 通过以上测试和结论,可以更准确地理解和使用 MySQL 事务,避免在事务管理中的常见误解。编辑于 2023-10-03 11:26 •IP属地 天津举报评论收藏1
公众号进入网站体验更佳

