Một kích hoạt on schema
(không có lược đồ được chỉ định) không kích hoạt cho tất cả các lược đồ. Nó chỉ kích hoạt khi hành động kích hoạt được chạy bởi người dùng sở hữu kích hoạt đó.
Vì vậy, chúng là khá khác nhau, và không thể thay thế cho nhau.
Đây là một ví dụ thiết lập bảng ghi nhật ký và ba create
trình kích hoạt: on database
và on schema
cho người dùng foo
và bar
:
Connected. -- as mat
SQL> create table mat.log (dt timestamp, who varchar(3),
2 cur varchar(10), own varchar(42), obj varchar(42));
Table created.
SQL> create or replace trigger db_trig
2 after create on database
3 begin
4 insert into mat.log values (systimestamp, 'db', user,
5 ORA_DICT_OBJ_OWNER, ORA_DICT_OBJ_NAME);
6 end;
7 /
Trigger created.
SQL> connect foo/foo
Connected.
SQL> create or replace trigger foo_trig
2 after create on schema
3 begin
4 insert into mat.log values (systimestamp, 'foo', user,
5 ORA_DICT_OBJ_OWNER, ORA_DICT_OBJ_NAME);
6 end;
7 /
Trigger created.
SQL> connect bar/bar
Connected.
SQL> create or replace trigger bar_trig
2 after create on schema
3 begin
4 insert into mat.log values (systimestamp, 'bar', user,
5 ORA_DICT_OBJ_OWNER, ORA_DICT_OBJ_NAME);
6 end;
7 /
Trigger created.
Bây giờ hãy tạo một bảng trong foo
lược đồ của, như foo
:
SQL> connect foo/foo
Connected.
SQL> create table foo.foo_stuff (id number);
Table created.
Và hãy tạo một bảng trong foo
lược đồ của, như bar
:
SQL> connect bar/bar
Connected.
SQL> create table foo.bar_stuff (id number);
Table created.
Đây là những gì chúng tôi đã đăng nhập:
SQL> select * from mat.log order by dt;
DT WHO CUR OWN OBJ
------------------------------ --- ---------- ---------- ---------------
25-NOV-12 07.52.03.797794 PM db FOO FOO FOO_TRIG
25-NOV-12 07.52.03.828670 PM db BAR BAR BAR_TRIG
25-NOV-12 07.52.03.865334 PM foo FOO FOO FOO_STUFF
25-NOV-12 07.52.03.865579 PM db FOO FOO FOO_STUFF
25-NOV-12 07.52.03.894672 PM bar BAR FOO BAR_STUFF
25-NOV-12 07.52.03.894911 PM db BAR FOO BAR_STUFF
6 rows selected.
Vì thế:
- hai
create trigger
báo cáo đã được after create on database
kích hoạt bởi trình kích hoạt "toàn cầu" . Kích hoạt đó cũng đăng nhập mọi thứ khác.
foo
đã after create on schema
đăng nhập việc tạo bảng được thực hiện bởifoo
bar
Trình kích hoạt đã ghi lại việc tạo bảng do bar
chính anh ta điều hành , mặc dù bar
đã tạo một bảng trong foo
lược đồ.