恢复删除后的触发器

xiongwenhua365 2009-04-23 07:07:01
1.表名test
2.在test上建一个触发器air_test
3.将test 删除

问题是:test 删除后,air_test也删除了?
air_test删除后放到哪去了呢?

通过select trigger_name from user_triggers where table_name='TEST';
TRIGGER_NAME
------------------------------
BIN$ZpyjErbzS1OVSCNCPfoXeg==$0 //这个就是air_test

将test 闪回后,air_test触发器还是起作用的,通过什么方法能将触发器从BIN$ZpyjErbzS1OVSCNCPfoXeg==$0变回到air_test呢?
...全文
329 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
changeking 2009-04-25
  • 打赏
  • 举报
回复
ORA-00942: 表或视图不存在多数是因为没有授权把,参考下面:
http://hi.baidu.com/jiaju111/blog/item/43a05f16b992331e962b43e7.html
xiongwenhua365 2009-04-25
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 cheng_fengming 的回复:]
是不是级联删除了?应该只能重建了吧?
[/Quote]
触发器没有被删除,只是被系统改了名字.
当我把表闪回后,触发器虽然被改了名字,但它仍然可以正常工作.
xiongwenhua365 2009-04-25
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 sunnyxjl 的回复:]
可以用flashbak吧表恢复过来,恢复的时候加上enable trigger!
[/Quote]

SQL> flashback table test to timestamp to_DATE('2009-04-25 18:37:31','yyyy-mm-dd
hh24:mi:ss') enable trigger;
flashback table test to timestamp to_DATE('2009-04-25 18:37:31','yyyy-mm-dd hh24
:mi:ss') enable trigger
*
第 1 行出现错误:
ORA-00942: 表或视图不存在


SQL> flashback table test to before drop enable trigger;
flashback table test to before drop enable trigger
*
第 1 行出现错误:
ORA-00933: SQL 命令未正确结束


我写的两个都错了,请问该怎么写呀?
xiongwenhua365 2009-04-25
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 changeking 的回复:]
引用 3 楼 xiongwenhua365 的回复:
引用 2 楼 Tomac 的回复:
通过代码重建.

能否具体一点?

你可以做个试验,表被删除后,触发器也会自动被删除掉,你可以试试用原名重新创建该触发器就知道了


set serveroutput on;

create or replace trigger TriggerT
after update of T_T_AGE on t_t
for each row
when (new.T_T_AGE ='19')
begin
dbms_output.put_line('warning message – new T_T_AGE at t…
[/Quote]
肯定可以创建 ,
因为原来的那个触发器被系统自动改了名字,
我现在就想把那了名字后的那个触发器再恢复回原来的那个名字,不知该怎么做?
changeking 2009-04-24
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 xiongwenhua365 的回复:]
引用 2 楼 Tomac 的回复:
通过代码重建.

能否具体一点?
[/Quote]
你可以做个试验,表被删除后,触发器也会自动被删除掉,你可以试试用原名重新创建该触发器就知道了


set serveroutput on;

create or replace trigger TriggerT
after update of T_T_AGE on t_t
for each row
when (new.T_T_AGE ='19')
begin
dbms_output.put_line('warning message – new T_T_AGE at t_t');
end;
触发器已创建

UPDATE t_t SET T_T_AGE = 17 WHERE T_T_ID = 'c' ;

select*from t_t;

drop table t_t;
-----------------------------------------------------------------
select*from depot;

create trigger TriggerT
after update of DADDRESS on depot
for each row
when (new.DADDRESS ='67Albert Road')
begin
dbms_output.put_line('warning message – new TDADDRESS at depot');
end;

触发器已创建
cheng_fengming 2009-04-24
  • 打赏
  • 举报
回复
是不是级联删除了?应该只能重建了吧?
sunnyxjl 2009-04-24
  • 打赏
  • 举报
回复
可以用flashbak吧表恢复过来,恢复的时候加上enable trigger!
tanzuwen 2009-04-24
  • 打赏
  • 举报
回复
应该 是删除了`  只能重建的吧。
xiongwenhua365 2009-04-23
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 Tomac 的回复:]
通过代码重建.
[/Quote]
能否具体一点?
Tomac 2009-04-23
  • 打赏
  • 举报
回复
通过代码重建.
xiongwenhua365 2009-04-23
  • 打赏
  • 举报
回复
删除一个表后,表上的触发器就是改了一下名字,其它都没变,连status 都还是有效的;难道就没有办法让触发器的名字还原了吗?

17,377

社区成员

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

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