Oracle
刪除外鍵約束是 Oracle 中的事件嗎?
我在 Oracle 中編寫了以下觸發器:
create or replace trigger foreign_drop before ddl on database begin insert into ddl_log select ora_sysevent, ora_dict_obj_owner, ora_dict_obj_name, null, user, sysdate from dual; end foreign_drop;
只要發生 DDL 事件,它就會觸發。但是當我刪除外鍵約束時,沒有任何記錄。刪除外鍵約束是否被視為事件?如何記錄刪除外鍵約束的操作?
以下觸發器擷取放置約束操作。
create or replace trigger foreign_drop after create or alter or drop on database begin dbms_output.put_line('DDL Fired!'); end foreign_drop; / SQL> set serveroutput on SQL> CREATE TABLE t2 ( id number, CONSTRAINT fk_id FOREIGN KEY (id) REFERENCES t1(id) ); 2 3 4 5 6 DDL Fired! Table created. SQL> alter table t2 drop constraint fk_id; DDL Fired! Table altered.
如何記錄刪除外鍵約束的操作?
與其重新發明輪子,不如使用內置的審計支持。
刪除約束是一個
ALTER TABLE
語句。因此啟用審計和審計ALTER TABLE
語句為:audit alter table;