事务的存在是为了保证数据的完整性、一致性、隔离性和持久性(即ACID原则),尤其在面对错误、并发和系统崩溃等不确定性时,能够确保数据库处于一个可靠和一致的状态。
因此事务本质上是为了应用层服务而特别创建的,而不是伴随着数据库系统天生就有的。
在 MySQL 中只有使用了 Innodb 数据库引擎的数据库或表才支持事务, MyISAM 不支持。
show variables like 'autocommit';
4.1.2改变当前的提交方式
select @@tx_isolation;
创建表:
create table if not exists account(
id int primary key,
name varchar(50) not null default '',
blance decimal(10,2) not null default 0.0
)ENGINE=InnoDB DEFAULT CHARSET=UTF8;
开始事务:
方案一:
begin;
方案二:
start transaction;
简单回滚演示:
Mysql当发生客户端崩溃时,未主动commit的事务,会主动回滚,不受是否自动提交的影响
结论:
事务操作注意事项