mysql事物
来源:互联网 发布:q动态头像软件 编辑:程序博客网 时间:2024/05/16 08:52
home 老师开课了 :
事物demo 在下面 讲解一下哈:
事物我的理解就是同生共死的关系,要么一起生,要么一起...... 发挥想象自己想吧
经典案例: 银行转账案例
转账需要两步 :
1. 转账的用户的钱减少
2.接到转账的人的账户失败
那么假如A用户余额不足,那么B用户能接收到转账资金吗? 答案是不能的
所以说1,2操作要么一起成功要么一起失败 , 如果单独执行的话,1没成功,2成功了,银行亏了
事物开启的时候,别的用户是不能进行操作这个数据库的,直到数据库提交或者回滚
事物操作的时候 其实是数据库的数据的拷贝,如果commit了 , 那么数据库的数据就真的改变了,否则数据库的数据是不会发生改变的
(数据真的改变了,最后回滚回来了)
一旦事务提交或回滚,则事务结束。
事务必须具备以下四个属性,简称ACID 属性:
CREATE TABLE bank
(
customerName CHAR(10),
currentMoney float
)
INSERT INTO bank(customerName,currentMoney)
VALUES('张三',1000)
INSERT INTO bank(customerName,currentMoney)
VALUES('李四',1)
UPDATE bank SET currentMoney=currentMoney-2000
WHERE customerName='张三'
UPDATE bank SET currentMoney=currentMoney+2000
WHERE customerName='李四'
select * from bank ;
UPDATE bank SET currentMoney=1000
WHERE customerName='张三' ;
UPDATE bank SET currentMoney=1
WHERE customerName='李四';
create procedure proc_transferMany
(
in fromname varchar(20),
in toname varchar(20),
in cash decimal(9,2)
)
begin
declare err int default 0;
declare continue handler for sqlexception set err=1;
start transaction;
UPDATE bank SET currentmoney=currentmoney-cash WHERE customername=fromname;
if(select currentmoney from bank where customername=fromname)<0 then
set err=1;
end if;
UPDATE bank SET currentmoney=currentmoney+cash WHERE customername=toname;
if err=1 then
rollback;
else
commit;
end if;
End;
select * from bank ;
- Mysql事物
- mysql事物
- mysql事物
- mysql--事物
- mysql事物
- mysql事物
- mysql 事物
- mysql数据库事物
- php mysql事物处理
- Mysql事物回滚
- Java事物(MySql)
- mysql 事物概念
- Mysql事物处理
- mysql事物级别详解
- mysql的事物
- mysql事物小笔记
- mysql 事物2
- MySQL事物原理
- 居中布局:水平居中 + 垂直居中 + 水平垂直居中
- Linux 内核的I2C设备
- 【杭电 oj】1863畅通工程 (最小生成数 模板)
- arm-none-linux-gnueabi-gcc下载
- 使用最少的硬币
- mysql事物
- JDK源码分析之主要阻塞队列实现类PriorityBlockingQueue
- for循环中移除元素的空指针坑
- GCD
- scala集合操作(2)
- spring定时执行频率动态改变(个人备份)
- 格式太旧或是类型库无效
- where、having之间的区别和用法
- javaScript 函数参数的按值传递