/*
事务的sql:tcl transaction control language
关键字:commit rollback savepoint
事务:多个dml语句作为一个整体 同生共死
举例:张三给李四转账一百元
实现事务需要plsql块:
begin
要执行的代码1
要执行的代码2
commit;
when others then
捕获到异常时要执行的代码
rollback;
end;
*/
create table bank(
bid int primary key,
bname varchar(100),
balance decimal(9,2) check(balance >=0)
);
insert into bank values(1,'张三',100);
insert into bank values(2,'李四',100);
insert into bank values(3,'王五',100);
update bank set balance=balance+100 where bname='李四';
update bank set balance=balance-100 where bname='张三';
select * from bank;
update bank set balance=100;
-- 把以上两个语句作为同一个事务 通过plsql实现
begin
update bank set balance=balance+100 where bname='李四';
update bank set balance=balance-100 where bname='张三';
commit;
exception
when others then
dbms_output.put_line('出错了!');
rollback;
end;
-- savepoint:使用::把同一个事务的dml语句分成多块:某块的提交 不影响其他块的提交
--李四给王五转账100 张三给李四转账100
begin
-- 李四给王五转账100
update bank set balance=balance+100 where bname='王五';
update bank set balance=balance-100 where bname='李四';
savepoint aa;
-- 张三给李四转账100
update bank set balance=balance+100 where bname='李四';
update bank set balance=balance-100 where bname='张三';
commit;
exception
when others then
dbms_output.put_line('出错了!');
rollback to savepoint aa;
dbms_output.put_line('事务回滚到aa位置处!');
commit;
end;
--- 事务的四大特征
/*
事务四大特征:ACID
分别是原子性、一致性、隔离性、持久性。
1、原子性(Atomicity)
原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚,因此事务的操作如果成功就必须要完全应用到数据库,如果操作失败则不能对数据库有任何影响。
*同一个事务关联的多个dml语句:要么都成功 要么都失败
2、一致性(Consistency)
一致性是指事务必须使数据库从一个一致性状态变换到另一个一致性状态,也就是说一个事务执行之前和执行之后都必须处于一致性状态。举例来说,假设用户A和用户B两者的钱加起来一共是1000,那么不管A和B之间如何转账、转几次账,事务结束后两个用户的钱相加起来应该还得是1000,这就是事务的一致性。
*不管事务成功还是失败,事务执行前后的数据库整体状态必须一致
3、隔离性(Isolation)
隔离性是当多个用户并发访问数据库时,比如同时操作同一张表时,数据库为每一个用户开启的事务,不能被其他事务的操作所干扰,多个并发事务之间要相互隔离。关于事务的隔离性数据库提供了多种隔离级别,稍后会介绍到。
*两个事务之间互相隔离 互不影响
4、持久性(Durability)
持久性是指一个事务一旦被提交了,那么对数据库中的数据的改变就是永久性的,即便是在数据库系统遇到故障的情况下也不会丢失提交事务的操作。
*/
![在这里插入图片描述](https://img-blog.csdnimg.cn/178497645302450dbb99d51690dec6ca.png)
事务transaction、oracle的事务:oracle11(跟着宝哥学java:oracle系列:全网最全):事务transaction、oracle的事务
最新推荐文章于 2023-06-14 12:11:09 发布