觸發器學習
查詢觸發器:
select table_owner, table_name,trigger_body from user_triggers
刪除觸發器:
drop trigger trigger_name
(但觸發器一般是這樣建的:create or replace ... 也就是如果存在的話,就可以替換)。
demo1:
使用觸發器實現對or_long_test的表dml操作時,把操作記錄在另一張表or_long_test_log裡。
#建表:
create table or_long_test(
int_id number(10) primary key,
vc_user_name varchar2(30),
int_age number(3),
vc_comment varchar2(80)
);insert into or_long_test(int_id,vc_user_name,int_age) values(1,'張家港',28);
insert into or_long_test(int_id,vc_user_name,int_age) values(2,'李靜',24);
#日誌表
create table or_long_test_log( vc_user_name varchar2(30),action varchar2(20), time date);
demo2: 實現資料同步
對把對錶or_long_test 增、刪、改 的資料同步到or_long_test_copy
先建表:
create table or_long_test_copy as select * from or_long_test
建觸發器:
create or replace trigger buid_or_long_test_copy
after insert or update or delete
on or_long_test
referencing old as old_value
new as new_value
for each row
begin
if inserting then
insert into or_long_test_copy(int_id,vc_user_name,int_age)
values(:new_value.int_id, :new_value.vc_user_name, :new_value.int_age);
elsif updating then
update or_long_test_copy set vc_user_name = :new_value.vc_user_name, int_age= :new_value.int_age
where int_id = :new_value.int_id;
elsif deleting then
delete from or_long_test_copy where int_id = :old_value.int_id;
end if;
end;
insert 一條資料:
insert into or_long_test(int_id,vc_user_name,int_age) values(7,'周杰倫',32)
update or_long_test set vc_user_name = '林子祥' where int_id =5
int_id vc_user_name int_age vc_comment
1 張家港 28
2 李靜 24
3 陳明 26
4 林海 30
5 林子祥 29
6 陳靜 18
7 周杰倫 32
參考:
觸發器學習
1 觸發器概念 2 觸發器與儲存過程的唯一區別是觸發器不能執行execute語句呼叫,觸發器為自動觸發。2 建立簡單觸發器 create trigger dbo aa on dbo aaaa for insert delete,update astruncate table bbbb insert ...
觸發器學習《一》 簡單觸發器建立
1 建立表 create table userinfo id number 10,0 primary key,name varchar2 40 2 建立序列 create sequence userinfo seq start with 1 maxvalue 9999999999 increment...
觸發器六 系統觸發器 學習筆記
系統觸發器用於監視資料庫服務的開啟 關閉 錯誤等資訊的取得,或者是監控使用者的行為操作等。如果要建立系統觸發器,可以使用如下的語法 create or replace trigger 觸發器名稱 before after 資料庫事件 on database schema when 觸發條件 decl...