Chinaunix首页 | 论坛 | 博客
  • 博客访问: 377292
  • 博文数量: 57
  • 博客积分: 4020
  • 博客等级: 上校
  • 技术积分: 647
  • 用 户 组: 普通用户
  • 注册时间: 2007-07-17 15:57
文章分类

全部博文(57)

文章存档

2009年(22)

2008年(35)

我的朋友

分类: Oracle

2009-05-15 12:38:51

当第一条SQL语句被执行的时候,事务就开始了。
当出现下面的事件的时候,事务变结束:
1 commit 或 rollback 被执行时
2 DDL 或 DCL 被执行时(自动提交)
3 用户退出
4 系统终止
 
1. 我在表test1中添加一条记录
SQL> select * from test1;
 
        ID NAME
---------- --------------------
         1 星星
         2 xingxing
         4 田月超
         5 田月星
         6 yuechaotian
         2 李连杰
 
已选择6行。
2. 我没有提交表,Oracle事务并没有结束,这条记录其实并没有被真正提交,
我另外打开一个sqlplus窗口进行查询
连接到:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
 
SQL> select * from test1;
 
        ID NAME
---------- --------------------
         2 xingxing
         4 田月超
         5 田月星
         6 yuechaotian
         2 李连杰
发现记录并没有提交。
现在我commit表
SQL> commit;
 
提交完成。
表已经被提交,事务结束。
3. 我再添加一条记录,然后回滚rollback
SQL> insert into test1 values(3,'yuexingtian');
 
已创建 1 行。
 
SQL> select * from test1;
 
        ID NAME
---------- --------------------
         1 星星
         2 xingxing
         3 yuexingtian
         4 田月超
         5 田月星
         6 yuechaotian
         2 李连杰
 
已选择7行。
然后执行回滚rollback
SQL> rollback;
 
回退已完成。
 
SQL> select * from test1;
 
        ID NAME
---------- --------------------
         1 星星
         2 xingxing
         4 田月超
         5 田月星
         6 yuechaotian
         2 李连杰
 
已选择6行。
此时表已经提交,事务也结束了。
4. 事务保存点(savepoint)
   保存点(SAVEPOINT)是事务处理过程中的一个标志,与回滚命令(ROLLBACK)结合使用,主要的用途是允许用户将某一段处理回滚而不必回滚整个事务,这在PL/SQL开发中还是很有用处的。
SQL> update test1 set name='张学友' where id =1;
 
已更新 1 行。
 
SQL> savepoint update_id  设置保存点
  2  ;
 
保存点已创建。
 
SQL> select * from test1;
 
        ID NAME
---------- --------------------
         1 张学友
         2 xingxing
         4 田月超
         5 田月星
         6 yuechaotian
         2 李连杰
 
已选择6行。
 
SQL> insert into test1 values(3,'小屁孩');
 
已创建 1 行。
 
SQL> select * from test1;
 
        ID NAME
---------- --------------------
         1 张学友
         2 xingxing
         3 小屁孩
         4 田月超
         5 田月星
         6 yuechaotian
         2 李连杰
 
已选择7行。
 
SQL> rollback to update_id
  2  ;
 
回退已完成。
 
SQL> select * from test1;
 
        ID NAME
---------- --------------------
         1 张学友
         2 xingxing
         4 田月超
         5 田月星
         6 yuechaotian
         2 李连杰
 
已选择6行。
 
此时已经回滚到我设置savepoint的地方(update_id)了。
Author:yuexingtian
Date:2009-5-15 星期五
2009-05-15

yuexingtian
阅读(1433) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~