我数据库有一个张是存的我数据库里表的一个信息,结构是:
表 中文表 表类型 ....
TAB1 员工表
TAB2 工资表
TAB3 考勤表
...........
现在我要做一个TRIGGER,在数据库里的物理删除表时候,自动把这个表里的相应的记录删除
也可以这样:
在建一个TRIGGER在这个表里,在删除这个表的一条记录的时候,删除数据里相应的物理表。。
表 中文表 表类型 ....
TAB1 员工表
TAB2 工资表
TAB3 考勤表
...........
现在我要做一个TRIGGER,在数据库里的物理删除表时候,自动把这个表里的相应的记录删除
也可以这样:
在建一个TRIGGER在这个表里,在删除这个表的一条记录的时候,删除数据里相应的物理表。。
解决方案 »
- 请高手指教!谢谢
- ------------@@-------------征集DBMS常用包的经验分享-------------@@----------
- oracle安装问题
- oracle 中能不能判断这个字段中是数字还是字符
- PL/SQL Developer中存储过程存放位置?
- oracle的odminer安装问题,急急急
- 一个关于SQL语句的问题
- 高手,请问有关于数据库优化问题!
- 请教UPDATE语句问题?
- 小弟Kangta刚学Oracle,请前辈们推荐本自学的好书!
- 请教oracle中如何得到一个依赖于某个表的所有存储过程触发器等对象?(急,高分求助,可以加分)
- 关于复制另外1张表的记录插入到新表的问题
据我所知的数据库(oracle sql server sybase),没有这样的触发器>>在建一个TRIGGER在这个表里,在删除这个表的一条记录的时候,删除数据里相应的物理表。。
CREATE TRIGGER delete_table
ON SYS_TABLE
FOR DETETE
AS
DECLARE @tab_name
SELECT @tab_name = TABLE_NAME FROM deleted
EXEC ('DROP TABLE ' + @tab_name )
SQL> create table ddl_log
2 ( ddl_time date
3 , object_name varchar2(30)
4 , action varchar2(100));
Table created.-- 建立一个基于ddl的trigger,注意该trigger所处理的对象名存在ORA_DICT_OBJ_NAME中
SQL> create or replace trigger audit_db_object_drop
2 after drop on schema
3 begin
4 insert into ddl_log
5 values (sysdate, ORA_DICT_OBJ_NAME,'DROPPED');
6 end;
7 /
Trigger created.--建立一个测试表
SQL> create table tbl_test(id integer);
Table created.--删除测试表
SQL> drop table tbl_test;
Table dropped.--删除操作被纪录在log表中
SQL> select * from ddl_log;
DDL_TIME OBJECT_NAME
---------------- ------------------------------
ACTION
--------------------------------------------------------------------------------
2004-11-15-13:31 TBL_TEST
DROPPED