首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >保存点是如何在Oracle中工作的?

问保存点是如何在Oracle中工作的?
EN

Database Administration用户
提问于 2012-10-19 20:16:55
回答 1查看 7.2K关注 0票数 1

我正在对我的DB进行相当严肃的操作,我希望保持我的数据安全。

不幸的是,有些地方出了问题,你看:

代码语言:javascript
复制
SAVEPOINT before_foo_update;

CREATE TABLE AUX_FOO as
   SELECT * FROM FOO;

TRUNCATE TABLE FOO;  

ALTER TABLE FOO
  MODIFY(BAR NUMBER(11) NOT NULL);

INSERT INTO FOO
  SELECT * FROM AUX_FOO;

DROP TABLE AUX_FOO;    

ROLLBACK TO SAVEPOINT before_foo_update;

不幸的是,我遇到了一个错误:

代码语言:javascript
复制
ROLLBACK TO SAVEPOINT before_foo_update
Error report:
SQL Error: ORA-01086: savepoint 'BEFORE_FOO_UPDATE' never established
01086. 00000 -  "savepoint '%s' never established"
*Cause:    Trying to roll back to a save point that was never established

现在福桌空了..。AUX_FOO也没有掉下来。你知道我做错了什么吗?

EN

回答 1

Database Administration用户

回答已采纳

发布于 2012-10-19 20:25:33

保存点是当前事务中的一个点。DDL语句(如CREATE TABLE、TRUNCATE、ALTER TABLE或DROP TABLE )将在语句运行之前和之后发出隐式提交,从而结束当前事务。一旦当前事务结束,您就不能再回滚到在该事务中定义的保存点。

潜在地,您需要考虑使用恢复点代替。还原点是数据库的属性,而不是事务,因此您可以生成许多事务,但仍然可以将整个数据库还原回还原点。但是,恢复到还原点会影响数据库在定义还原点到恢复时间之间所做的每一项更改--您不仅会丢失会话或用户所做的所有更改,还会丢失数据库中的所有会话和用户所做的更改。

票数 6
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/27281

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档