savepoint 失效问题

[复制链接]
查看11 | 回复3 | 2014-6-20 06:00:12 | 显示全部楼层 |阅读模式
create table t1 (f1 number);
insert into t1 values (1);
commit;
update t1 set f1=f1+10;
savepoint s1;
update t1 set f1=f1+10;
savepoint s2;
update t1 set f1=f1+10;
savepoint s3;
rollback savepoint to s2;
select * from t1;

执行上述sql之后,结果应该显示21对吧?可实际上显示的是1.
哪位能给提个醒,看看是哪里出了问题。谢谢。

回复

使用道具 举报

千问 | 2014-6-20 06:00:12 | 显示全部楼层
我用你的跑了一遍,没什么问题,结果是21, 我怀疑你是不是执行过rollback导致savepoint失效了。你可以再试一下
SQL> create table t1 (f1 number);
Table created.
SQL> insert into t1 values(1);
1 row created.
SQL> commit;
Commit complete.
SQL> update t1 set f1=f1+10;
1 row updated.
SQL> select * from t1;
F1
----------
11
SQL> savepoint s1;
Savepoint created.
SQL>update t1 set f1=f1+10;
1 row updated.
SQL> select * from t1;
F1
----------
21
SQL> savepoint s2;
Savepoint created.
SQL> update t1 set f1=f1+10;
1 row updated.
SQL> select * from t1;
F1
----------
31
SQL> savepoint s3;
Savepoint created.

SQL> rollback to s2;
Rollback complete.
SQL> select * from t1;
F1
----------
21

回复

使用道具 举报

千问 | 2014-6-20 06:00:12 | 显示全部楼层
谢谢楼上帮助,我找到原因了,是因为我命令敲错了。
应该是:
rollback to s2;
之前的客户端是sql developer,它没有提示命令错误。
刚刚用sqlplus重新测试发现了问题。
回复

使用道具 举报

千问 | 2014-6-20 06:00:12 | 显示全部楼层

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行