我有下表和觸發器。Oracle架構觸發不被架構所有者以外的其他用戶觸發
CREATE TABLE LogSchema (
user varchar2(100),
date_ date,
operation varchar2(100),
obj_type varchar2(100),
obj_name varchar2(100)
);
CREATE OR REPLACE TRIGGER LogSchema
AFTER DDL ON USER1.SCHEMA
/* can't use ON DATABASE or else it will log
everything that happens on all schemas*/
DECLARE
BEGIN
INSERT INTO LogSchema VALUES
(USER
, SYSDATE
, sys.sysevent
, sys.dictionary_obj_type
, sys.dictionary_obj_name);
END LogSchema;
我想記錄發生在USER1架構上的每個DDL動作(創建/刪除表/程序等)。
CREATE TABLE USER1.TEST (
test varchar2(100)
);
它不會記錄:如果USER1使一個DDL操作,如果用戶2使得上USER1模式像一個DDL操作將只執行該觸發器。任何人都知道我的觸發器有什麼問題?
+1語法混亂。在大多數情況下,SCHEMA嚴格意味着收集一個賬戶擁有的對象,霍夫曼的解釋適合這種用法。爲了符合實際的實現,語法應該像'AFTER DDL BY user1.USER'。 – APC 2009-10-29 02:17:00
同意。我花了一段時間才通過實驗找出自己,然後重新閱讀文檔。 – DCookie 2009-10-29 02:35:12
感謝您的迴應,但我該如何製作觸發器以達到我想要的效果? =) – Hoffmann 2009-11-06 06:22:27