mysql_事务

来源:互联网 发布:热血屠龙进阶数据 编辑:程序博客网 时间:2024/05/29 10:12
        事务
为什么需要事务:
通俗点来说,事务可以保证数据不处于一种中间的不合理的状态,
利用事务,可以保证多个用户共享数据的同时访问(并发)
银行转钱,比如不能张三转了李四没有加上去,或者张三减少钱了李四没有收到的中间状态
这样就是中间状态,这样的状态就是十分严重的问题。
事务的机制和线程里面的锁是一样的。
要么成功,要么失败,不能中间一般。
什么是事务:
    就是把多件事情当做一件事情来处理。也就是大家同在一条船上,要活一起活,要over一起over !
事务的使用:
mysql不支持所以不知道,只有设计库的人知道。
--begin transaction 开始事务
-- commit transaction 提交事务

*/
create database db_bank
use db_bank;
create table bank(
customerEname nvarchar(200),
currentMoney money,
)
insert into bank("customerEname","currentMoney") values('张三',1000);
insert into bank("customerEname","currentMoney") values('李四',2);
alter table bank add constraint check_currentMoney check(currentMoney>=0.1);

select * from bank;

-- 现在把张三的钱打给李四。
update bank set currentMoney = currentMoney -1000 where customerEname='张三';
update bank set currentMoney =currentMoney +1000 where customerEname ='李四';
--删除掉,我刚才执行的垃圾操作
delete  from bank where customerEname ='张三';
delete from bank where customerEname='李四'
显然不行,有了check约束,打钱的那个人的钱不会减少。

--自己百度搜索午饭式查询方法
/*

事务的特性:
原子性:事务是一个完整的操作,事务的各个步骤是不可以分割的,要么都执行,要么都不执行。
一致性:当事务完成时,数据必须处于一致的状态,要么处于开始状态,要么处于结束状态,不允许处于中间状态。
同样的请求过来,是隔离的
隔离性:指的是当前的事务和其他未完成事务是隔离的,在不同的隔离级别下,事务的读取操作,可以得到的结果是不同的
持久性:事务完成之后,它对数据库的修改将会永远的被保持,事务的log可以保证(废话,都commit了还不持久吗?)
事务的的永久性。
一旦提交之后,马上就持久了。废话,你都提交了,当然就是持久了。

SqlServer 2005和 mysql 甭管什么语句,写完就直接commit了、

*/