MySQL与事务

事务是作为单个逻辑工作单元执行的一系列操作。一个逻辑工作单元必须有四个属性,称为原子性、一致性、隔离性和持久性 (ACID) 属性,只有这样才能成为一个事务。

原子性 :事务必须是原子工作单元;对于其数据修改,要么全都执行,要么全都不执行。

一致性 :事务在完成时,必须使所有的数据都保持一致状态。在相关数据库中,所有规则都必须应用于事务的修改,以保持所有数据的完整性。事务结束时,所有的内部数据结构(如 B 树索引或双向链表)都必须是正确的。

隔离 :由并发事务所做的修改必须与任何其他并发事务所做的修改隔离。事务识别数据时数据所处的状态,要么是另一 并发事务修改它之前的状态,要么是第二个事 务修改它之后的状态,事务不会识别中间状态的数据。这称为可串行性,因为它能够重新装载起始数据,并且重播一系列事务,以使数据结束时的状态与原始事务执 行的状态相同。

持久性 :事务完成之后,它对于系统的影响是永久性的。该修改即使出现系统故障也将一直保持。

MYSQL中只有INNODBBDB 类型的数据表才能支持 事务 处理,其他的类型是不支持的!

1.START   TRANSACTION, COMMIT和ROLLBACK语法



2
3
4
START TRANSACTION | BEGIN [ WORK ]
COMMIT [ WORK ] [ AND [ NO ] CHAIN] [[ NO ] RELEASE]
ROLLBACK [ WORK ] [ AND [ NO ] CHAIN] [[ NO ] RELEASE]
SET AUTOCOMMIT = {0 | 1}

start    transaction 或 begin 语句可以开始一项新的事务。commit 可以提交当前事务,是变更成为永久变更。rollback 可以 回滚当前事务,取消其变更。set    autocommit  语句可以禁用或启用默认的 autocommit 模式,用于当前连接。更多请查看mysql手册MySQL事务处理和锁定语句

*实例:

#数据表结构如下:


1
2
3
4
5
create table ` user `(
  `id` int (10)  not null auto_increment,
  ` name ` varchar (100) default null comment 'name' ,
  primary key (`id`)
)engine=innodb default charset=utf8;

#执行:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
// ---------------
select * from ` user `;
// --------------
start transaction ;
insert into ` user ` (` name `)  values ( 'admin' );
insert into ` user ` (` name `)  values ( 'root' );
commit ;
select * from ` user `;
// -------------
start transaction ;
insert into ` user ` (` name `) values ( 'sword' );
insert into ` user ` (` name `) values ( 'test' );
rollback ;
select * from ` user `;

#第一次select结果:Empty

#第二次select结果:


1
2
3
4
5
6
+ -----------+
| id | name |
+ -----------+
|  1 | admin|
|  2 | root |
+ -----------+

#第三次select结果:


1
2
3
4
5
6
+ -----------+
| id | name |
+ -----------+
|  1 | admin|
|  2 | root |
+ -----------+

事务有着广泛的应用,例如:银行转账、网上购物、各种管理系统。

 

更多内容请查看www.sword88.com

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值