十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
事务是为了实现数据的一致性和并发处理,你对数据进行定义和修改时就会产生事务。
做网站、成都网站建设,成都做网站公司-成都创新互联已向近1000家企业提供了,网站设计,网站制作,网络营销等服务!设计与技术结合,多年网站推广经验,合理的价格为您打造企业品质网站。
例如你执行update语句,这时事务就开始了,执行commit会提交事务,而rollback会回滚(撤销)事务。如果你什么也不做,那么正常退出程序时会自动提交,而程序异常中止则会回滚事务。
oracle的事务是以session开始登录后的第一条DML语句开始的,然后以DDL(drop,create,alter,rename等),TCL的rollback,commit,DCL(grant,revoke)结束。
当然你也可以手动设置事务属性,如只读事务或者顺序事务:
set transaction read only
set transaction isolation level SERIALIZABLE
存储过程里的事务操作
create or replace procedure pr_mypro (p_a in varchar p_b in varchar p_count out number)
temp varchar ( ); /**//*定义临时变量*/
is
begin
select code into p_count from table where a=p_a; /**//*查询并返回值*/
temp := p_count; /**//*将返回值赋给临时变量*/
savepoint point ; /**//*保存点*/
insert into table (a b)values(temp p_b); /**//*将临时变量值添加到新表的字段*/
savepoint point ;
insert into
exception
when others then
rollback to savepoint point ; /**//*异常处理 保存点下面的操作都不会被执行*/
return;
end;
保存点(SAVEPOINT)是事务处理过程中的一个标志 与回滚命令(ROLLBACK)结合使用 主要的用途是允许用户将某一段处理回滚而不必回滚整个事务
如果定义了多个savepoint 当指定回滚到某个savepoint时 那么回滚操作将回滚这个savepoint后面的所有操作(即使后面可能标记了N个savepoint)
lishixinzhi/Article/program/Oracle/201311/16520
以oracle自带的scott为例:
1、select
t1.ename,t2.ename
as
mgrname,d.dname
from
scott.emp
t1,scott.emp
t2,scott.dept
d
where
t1.mgr=t2.empno
and
t2.deptno=d.deptno
2、select
d.*
from
scott.dept
d,(select
rownum
n,
tt.*
from
(select
count(*)
c,deptno
from
scott.emp
group
by
deptno
order
by
c
desc)
tt)t
where
t.n=1
and
t.deptno=d.deptno
3、select
*
from(select
t.*,dense_rank()over
(partition
by
deptno
order
by
sal)
r
from
scott.emp
t
where
deptno=30)
where
r=3
4、select
*
from(select
t.*,rank()over
(partition
by
n
order
by
sal)
r
from
(select
''
as
n,tt.*
from
scott.emp
tt)
t)
where
r
between
5
and
10