MySQL使用以下的语句来标识事务的开始:数据库
start transaction
或者测试
begin
事务成功后,使用以下的语句来标识事务的成功:code
commit
当事务逻辑出现异常时,可使用以下的语句来标识事务的取消:事务
rollback
事务处理用来管理 INSERT 、UPDATE 和 DELETE 语句,没法管理不会改变数据的 SELECT 查询语句,也没法管理 CREATE 或 DROP 操做。事务操做隔离了其中被操做数据状态改变的可见性,同时使事务内的屡次数据更新操做具备了原子性,即要么同时成功,要么所有失败。ci
建立测试表 test:it
create table test(a int, b char(5));
执行事务操做:io
start transaction; insert into test values('1', 'right'); insert into test values('2', 'wrong'); update test set b = 'right' where a = 2; select * from test; commit;
上述操做中,一个事务内包含两次独立的插入操做和一次更新操做,以及一次查询所有数据的操做。因为事务的隔离性,当事务结束前,其余链接的查询语句将没法查询到插入的这两条数据,也没法对其进行更新操做,只有处于同一事务的查询语句和更新语句能够针对该新插入的数据进行查询或更新。当执行了 commit 语句后,该事务内的操做将所有生效,使其余链接也能够对此事务更新后的数据进行操做。table
当上述事务中的语句若是出现执行失败,或在事务提交前执行了 rollback 语句,那么无论语句已经执行成功了多少条,其数据库状态都将恢复到所有语句执行以前的状态。test