为什么要有事务
现在的很多软件都是多用户,多程序,多线程的,对同一个表可能同时有很多人在用,为保持数据的一致性,所以提出了事务的概念。这样很抽象,
举个例子:
A 给B 要划钱,A 的账户-1000, B 的账户就要+1000元,这两个update 语句必须作为一个整体来执行,不然A 扣钱了,B 没有加钱这种情况很难处理(找出原因)。
事务的ACID特性
1. A(atomicity) 原子性。一个事务的执行被视为一个不可分割的最小单元。事务里面的操作,要么全部成功执行,要么全部失败回滚,不可以只执行其中的一部分。
2. C(consistency) 一致性。一个事务的执行不应该破坏数据库的完整性约束。如果上述例子中第2个操作执行后系统崩溃,保证A和B的金钱总计是不会变的。
3. I(isolation) 隔离性。通常来说,事务之间的行为不应该互相影响。然而实际情况中,事务相互影响的程度受到隔离级别的影响。文章后面会详述。
4. D(durability) 持久性。事务提交之后,需要将提交的事务持久化到磁盘。即使系统崩溃,提交的数据也不应该丢失。
事务的操作
begin 开始一个事务
commit 提交一个事务
rollback 回滚一个事务
好的现在开始操作;
use IT;
begin;
insert into course values(6,‘java’129,2);
commit;
select * from course;
use IT;
begin;
uodate course set sorce=100 where id='6';
rollback;
回滚(撤销操作)
select * form course;
用set命令进行控制;
set autocommit=0 禁止自动提交
set autocommit=1 开启自动提交
use IT;
insert into course values(7,'python',111,3);
insert into course values(8,’php’,98,3);
select * from course;
好了就到这里吧。