存储过程中含有ddl语句无法实现rollback吗?

yingtju 2008-05-06 11:38:35
查了好久 自己的结论是无法实现
不知道大家有没有什么好的方法

现在需求很恶心 可以建表 没权限删表
不知道怎么搞好了
...全文
260 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
yingtju 2008-05-07
  • 打赏
  • 举报
回复
我没有drop的权限啊

看来是没什么好办法了

散分~
zhpsam109 2008-05-06
  • 打赏
  • 举报
回复
可以考虑使用临时表啊!
Andy__Huang 2008-05-06
  • 打赏
  • 举报
回复
所有DDL语句都会自动提交的,没有rollback语句

我想你可以通过后面的语句判断,是否把数据清空,不一定要删除表
allanmorgan 2008-05-06
  • 打赏
  • 举报
回复
再写一段删除的语句吧,在Exception中判断,有错误就执行这些drop操作。
dlpseeyou 2008-05-06
  • 打赏
  • 举报
回复
猛学
v888 2008-05-06
  • 打赏
  • 举报
回复
关注
jason819 2008-05-06
  • 打赏
  • 举报
回复
学习!
qiyousyc 2008-05-06
  • 打赏
  • 举报
回复
就是在exception中判断,执行删除的ddl语句。
qiyousyc 2008-05-06
  • 打赏
  • 举报
回复
变态的要求
错误了,判断执行的步骤,生成新的dll语句删除不就可以了。
rollback不支持ddl语句的。
临摹 2008-05-06
  • 打赏
  • 举报
回复
不光在存储过程里面,所有DDL语句都会自动提交的,
甚至把DDL语句之前执行的操作也都COMMIT了,
建立临时表也可以,但用完之后临时表也DROP不掉呀。
yingtju 2008-05-06
  • 打赏
  • 举报
回复
嗯 我说的不够详细 不仅是表的问题,存储过程中涉及的操作有:

1. 创建user(数据库的user,每个user都有自己的表)
2. 创建user table,grant privs
3. create trigger on user table
4. 在应用的users表中记录user

即使4错了也要rollback,1建的用户要删掉
都是ddl dcl 想不通该怎么办
robin_ares 2008-05-06
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 zhpsam109 的回复:]
可以考虑使用临时表啊!
[/Quote]
可以的,你可以先建一个镜像的临时表,所有操作都ok后,在变成正式表。别忘了做个任务,让有权限的一方把昨天以前的临时表删掉

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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