oracle 事务处理 对drop table没有效果吗?

essenza 2008-09-30 03:45:02
有一个过程:

语句1: drop table temp
语句2: create table temp as select ........

我想要在当语句2出错的时候,语句1回滚,但是我用事物处理没有效果,难道事物处理对drop 无效?

有无其他的办法?

谢谢!
...全文
250 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
natty_boy 2008-09-30
  • 打赏
  • 举报
回复
语句1: drop table temp
语句2: create table temp as select ........
看你是先删除,在创建,其实要处理的只是数据而已,何不换种方式,
只删除数据,保留表呢,可以改成如下

1. delete from table temp
2. insert into temp select .....
mantisXF 2008-09-30
  • 打赏
  • 举报
回复
Agree! :-)[Quote=引用 6 楼 vc555 的回复:]
变通方法就是flashback table xxx to before drop;
:D
[/Quote]
BlueskyWide 2008-09-30
  • 打赏
  • 举报
回复
使用:

create or replace table temp as select ........

如果语句错误,可能不会删除原表。因手边没有环境,请楼主自已测试一下。

vc555 2008-09-30
  • 打赏
  • 举报
回复
变通方法就是flashback table xxx to before drop;
:D
essenza 2008-09-30
  • 打赏
  • 举报
回复
谢谢各位,有没有变通的方法啊
mantisXF 2008-09-30
  • 打赏
  • 举报
回复
DROP, CREATE, ALTER 是DDL语句,内置了COMMIT操作。

一旦执行成功就不能回滚。
flg_inwind 2008-09-30
  • 打赏
  • 举报
回复
drop没有回滚操作。
10g后有快速恢复可以恢复删除的表。
aiirii 2008-09-30
  • 打赏
  • 举报
回复
事务似乎只对DML语句有效

如果是10g的话,可以用flashback table 处理,但这些是DBA处理才对
hyrongg 2008-09-30
  • 打赏
  • 举报
回复
Oracle在任何DDL(create,建表)语句之前和之后发布一个隐式的提交.所以即使你的DDL
语句执行不成功,你也不能回退前面的语句,因此服务器已经发布提交命令.
执行commit或rollback语句来明确地结束事务.

17,137

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧