MySQL中事务可通过显式使用BEGIN或START TRANSACTION启动,适合精确控制;当autocommit=1时,每条语句自动作为独立事务提交;某些DDL语句如CREATE、ALTER会触发隐式提交;通过SET autocommit=0可关闭自动提交,使后续操作均属于同一事务,直至手动COMMIT或ROLLBACK。

MySQL 中事务的启动方式有多种,具体取决于是否开启自动提交模式以及使用的命令类型。事务的核心作用是保证一组数据库操作的原子性、一致性、隔离性和持久性(ACID)。以下是常见的事务启动方式:
1. 显式启动事务(BEGIN 或 START TRANSACTION)
这是最常用的事务启动方式,通过手动声明事务开始,明确控制事务边界。
示例:- BEGIN; 或 START TRANSACTION;
- 执行 SQL 操作(如 INSERT、UPDATE、DELETE)
- 通过 COMMIT; 提交事务 或 ROLLBACK; 回滚事务
这种方式适合需要精确控制事务范围的场景,比如批量数据处理或业务逻辑复杂的操作。
2. 自动提交模式下的隐式启动
当 autocommit = 1(默认开启)时,每条单独的 SQL 语句都会被当作一个事务自动提交。此时,事务在语句执行前自动启动,并在执行后立即提交。
例如:- 执行 UPDATE users SET name = 'Tom' WHERE id = 1;
- 该语句自动作为一个事务执行并提交
如果想在 autocommit 开启时执行多条语句作为同一个事务,需先显式使用 BEGIN 或 START TRANSACTION 来关闭自动提交的单语句行为。
SmartB2B 是一款基于PHP、MySQL、Smarty的B2B行业电子商务网站管理系统,系统提供了供求模型、企业模型、产品模型、人才招聘模型、资讯模型等模块,适用于想在行业里取得领先地位的企业快速假设B2B网站,可以运行于Linux与Windows等多重服务器环境,安装方便,使用灵活。 系统使用当前流行的PHP语言开发,以MySQL为数据库,采用B/S架构,MVC模式开发。融入了模型化、模板
3. 隐式提交的特殊情况
某些 SQL 语句在执行前会自动提交当前正在进行的事务,并开启一个新的事务上下文。这类语句包括 DDL(数据定义语言)操作,如:
- CREATE TABLE
- ALTER TABLE
- DROP TABLE
- TRUNCATE TABLE
此外,执行这些语句前如果有未提交的事务,系统会先自动提交,再执行新语句,因此它们会“打断”当前事务流程。
4. 使用 SET autocommit 禁用自动提交
通过设置 SET autocommit = 0; 可以关闭自动提交模式。此后,所有 SQL 语句都会属于同一个事务,直到显式执行 COMMIT 或 ROLLBACK。
注意:- 连接断开时未提交的事务会被自动回滚
- 适合长时间运行的批处理任务,但需小心避免长时间锁表
基本上就这些。掌握事务启动方式有助于更好地控制数据一致性和并发行为,特别是在高并发或复杂业务逻辑中尤为重要。









