はい、できます。ユーザーはCREATE ANY TRIGGER
を持っている必要があります :
DBAとして:
CREATE USER a IDENTIFIED BY a;
GRANT CREATE SESSION, CREATE ANY TRIGGER TO a;
CREATE USER b IDENTIFIED BY b;
GRANT CREATE SESSION TO b;
として:
CREATE OR REPLACE TRIGGER a.create_trigger
BEFORE CREATE ON b.SCHEMA
BEGIN
raise_application_error(num => -20000, msg=> 'create_trigger vetoes');
END;
/
bとして:
CREATE TABLE t(i INT);
ERROR at line 1:
ORA-00604: error occurred at recursive SQL level 1
ORA-20000: create_trigger vetoes
ORA-06512: at line 2
このトリガーは微調整する必要があります。CREATE TABLE
だけでなく起動します。 ただし、すべてのCREATE
ステートメント...