我数据库有一个张是存的我数据库里表的一个信息,结构是:
表 中文表 表类型 ....
TAB1 员工表
TAB2 工资表
TAB3 考勤表
...........
现在我要做一个TRIGGER,在数据库里的物理删除表时候,自动把这个表里的相应的记录删除
也可以这样:
在建一个TRIGGER在这个表里,在删除这个表的一条记录的时候,删除数据里相应的物理表。。
表 中文表 表类型 ....
TAB1 员工表
TAB2 工资表
TAB3 考勤表
...........
现在我要做一个TRIGGER,在数据库里的物理删除表时候,自动把这个表里的相应的记录删除
也可以这样:
在建一个TRIGGER在这个表里,在删除这个表的一条记录的时候,删除数据里相应的物理表。。
解决方案 »
- oracle9i for linux(AS3u9) 导入数据失败。
- Windows2003 Server系统无法安装Oracle 10g
- oracle 创建监听却连不上???急急急
- 请问有什么工具支持从INFORMIX迁移至ORACLE
- 如何查询身份证号重复的人员
- 简单的返回结果集的函数问题
- 语句效率的问题
- 数据导出,哪位高手帮帮忙?
- 卸载ORACLE后,删除了原文件夹,重新安装ORACLE, 又重新创建原有的数据库,却报已经存在服务? 如何删除原有的服务啊?
- 如何在sql中进行位操作?
- 请教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