网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > 数据库 > Oracle教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
数据库:数据库教程,数据库技巧,Oracle教程,MySQL教程,Sybase教程,Access教程,DB2教程,数据库安全,数据库文摘
本月文章推荐
.利用errorstack event解决问题.
.用SYS执行全文索引的建立时出现权.
.SQL Server中的Datediff移植到OR.
.Oracle新手最常碰到的6个错误及解.
.教你Oracle Advanced Replication.
.Oracle两年内不再收购 瞄准中间件.
.监控数据库性能的语句.
.Oracle9i初始化参数中文说明4.
.ZT-Statspack安装配置使用说明一.
.数据库查询结果的动态排序.
.C中设置oracle环境变量.
.在Oracle中返回多个结果集.
.解析Oracle 8i/9i的计划稳定.
.Oracle诊断案例-Spfile案例一则.
.关于Oracle降序索引的定意及回溯.
.重建Oracle数据库控制文件的简单.
.Oracle数据库技术(6).
.Oracle Job任务异常原因分析及其.
.Oracle有关Linux常见问题的详细解.
.循序渐进讲解Oracle数据库管理员.

包含同名触发器的表PURGE TABLE出错

发表日期:2008-2-9


  今天在测试的时候无意中发现了一个10g的小bug.当包含同名触发器的表被放入回收站时,PURGE TABLE会报错。   例子如下: SQL> CREATE TABLE T (ID NUMBER); 表已创建。
SQL> CREATE OR REPLACE TRIGGER T BEFORE INSERT ON T
FOR EACH ROW
BEGIN
NULL;
END;
/
触发器已创建
SQL> DROP TABLE T;
表已删除。
SQL> PURGE TABLE T;
PURGE TABLE T   *第 1 行出现错误:   ORA-38307: 对象不在回收站中   查询回收站,可以发现T表: SQL> SELECT OBJECT_NAME, ORIGINAL_NAME, TYPE FROM RECYCLEBIN;
OBJECT_NAME ORIGINAL_NAME TYPE
------------------------------
BIN$+CjKdYw1T2+phKc0o+wpyg==$0 T TRIGGER
BIN$0Lhl98NsTUaWFEUUrsVdyg==$0 T TABLE 闪回操作并不受影响,而且这种表假如直接删除并PURGE也不会出错。
SQL> FLASHBACK TABLE T TO BEFORE DROP;
闪回完成。
SQL> DROP TABLE T PURGE;
表已删除。   问题出在同名的触发器上,假如没有触发器,或者触发器与表名不相同的话,则不存在问题: SQL> CREATE TABLE T (ID NUMBER);
表已创建。
SQL> CREATE OR REPLACE TRIGGER TRI_T BEFORE INSERT ON T
FOR EACH ROW
BEGIN
NULL;
END;
/
触发器已创建
SQL> DROP TABLE T;
表已删除。
SQL> PURGE TABLE T;
表已清除。
  错误的解决方法很多,除了上面的先闪回在直接删除外,还可以在PURGE TABLE的时候指定回收站中的名称,或者采用直接PURGE RECYCLEBIN的方式清除(这种方法会将当前用户下RECYCLEBIN中所有的对象清除)。
上一篇:注意:Oracle中的联合主键查询问题 人气:670
下一篇:利用PHP创建由Oracle驱动的SOAP服务 人气:680
浏览全部Oracle教程的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐