觸發器學習

2021-06-16 17:14:01 字數 2253 閱讀 6710

觸發器學習

查詢觸發器:

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...