奇怪,这个是什么错误,关于建好触发后,执行表插入的时候报错,请指点

[复制链接]
查看11 | 回复3 | 2014-7-11 07:56:59 | 显示全部楼层 |阅读模式
SQL> create or replace trigger ljb_abc_trigger
2before insert on ljb_abc for each row
3declare
4v_count number(5);
5begin
6select count(*) into v_count from ljb_abc;
7if (v_count>=10) then
8raise_application_error(-20000,'records were more than Max set,ple
9e insert to another table');
10end if;
11end;
12/
触发器已创建
SQL> select * from ljb_abc;
未选定行
SQL> declare i number;
2begin
3for i in 1..9 loop
4insert into ljb_abc values (i);
5end loop;
6end;
7/
declare i number;
*
第 1 行出现错误:
ORA-04045: 在重新编译/重新验证 ABC.BIN$vcqHYj+VRpWwRXBB2gwzFQ==$0 时出错
ORA-38301: 无法对回收站中的对象执行 DDL/DML
ORA-06512: 在 line 4

SQL>
回复

使用道具 举报

千问 | 2014-7-11 07:56:59 | 显示全部楼层
哦,原来是回收站要清空才可以,是这样吗,如果真是这样,那不是很麻烦啊,每次DROP对象都要做两次,一次是删除,第二次是回收站,那不是麻烦晕倒了吗
SQL> SELECT object_name,original_name FROM user_recyclebin;
OBJECT_NAME
ORIGINAL_NAME
------------------------------ --------------------------------
BIN$Aib74+KGTL2u1kBcWIcGFA==$0 TEST
BIN$nWTWHcy8Svu5EDkfJBnnJw==$0 SYS_C005471
BIN$GPK1g1sVQfaR8aC+tILQEA==$0 TEST
BIN$P7QzmrSjRQapVBysbi55pQ==$0 A
BIN$jvn7s0JlQRezaHfS5K94mw==$0 TEST_AA
BIN$5VTGr3QmQ62w/5Sz1+B7rQ==$0 IDX_TEST_3
BIN$k74Qu/lQSFmmOsmOqeAEUQ==$0 A
BIN$nafjUfASSOqwYrVHeSE/fg==$0 B
BIN$7t27DxUJS26tUFyaCG9ogg==$0 C
BIN$oFwN2iQ1Q/yrlJep/MXOaA==$0 C
BIN$ypg31cziRn+rYa3jdO+pSA==$0 ABC_VIEW
OBJECT_NAME
ORIGINAL_NAME
------------------------------ --------------------------------
BIN$naDyUGazROCu67+BJDus3A==$0 ABC
BIN$vcqHYj+VRpWwRXBB2gwzFQ==$0 LJB_ABC_TRIGGER
已选择13行。
不过晕倒了
SQL> purge table "BIN$vcqHYj+VRpWwRXBB2gwzFQ==$0"
2;
purge table "BIN$vcqHYj+VRpWwRXBB2gwzFQ==$0"
*
第 1 行出现错误:
ORA-38307: 对象不在回收站中

SQL> purge trigger"BIN$vcqHYj+VRpWwRXBB2gwzFQ==$0"
2;
purge trigger"BIN$vcqHYj+VRpWwRXBB2gwzFQ==$0"
*
第 1 行出现错误:
ORA-38302: PURGE 选项无效

SQL>
回复

使用道具 举报

千问 | 2014-7-11 07:56:59 | 显示全部楼层
我没有10g的环境 不过10g里面drop一个对象的时候有个关键字 可以永久删除
呵呵 类似于 windows 中的 Shift + Del
回复

使用道具 举报

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

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行