觸發器總結

2021-06-03 00:46:29 字數 1824 閱讀 8583

觸發器總結

trigger是當特定的sql dml 語句,如insert、update或者delete語句在特定的資料庫表上執行時,由資料庫自動啟用的過程。觸發器對於實現表中某個列值得高階變更審計等功能非常有用。

1、  觸發器執行的時機

觸發器可以在sql語句執行之前和之後啟用。

觸發器根據dml語句影響的行數分為行級觸發(row-level trigger)和語句級觸發(statement-level)。

比如:一條update語句修改10行資料,同時還有乙個行級觸發器啟用,那麼這個行級觸發器將執行10次;如果是乙個語句級觸發器,則是針對整條update語句而言的,觸發器只啟用一次

2、  建立觸發器

語法如下:

create [orreplace] trigger

on  

[for eachrow [when (trigger_condition)]]

begin

end ;

3、  獲取觸發器相關資訊

select * from all_source where type=upper('trigger') andname=upper('')

同時這條語句根據不同的type和name可以檢視不同型別的內容

4、  禁用和啟用觸發器

禁用:alter trigger disable

啟用:alter trigger enable

5、  刪除觸發器

drop trigger enable

觸發器例項

1、  自增列

create orreplace trigger ec_bookinfo_bef_insert

before insert on ec_bookinfo 

for each row

begin

select ec_bookinfo_seq.nextval into :new.bookidfrom dual;

end ec_bookinfo_bef_insert;

2、  記錄最後修改時間

create orreplace trigger bef_update_notice

before update of isread on t_notice_send

for each row

begin

--修改傳送表 簽收時間

:new.receivetime := sysdate;

end aft_update_notify;

3、  兩表資料保持一致

create orreplace trigger aft_update_user

after update of device_id on ss_user

for each row

declare

begin

if(:new.device_id<>:old.device_id)

then

update t_gps_sch set device_id =:new.device_id

where device_id=:old.device_id;

update t_gps_sch_set set deviceids=:new.device_id

where deviceids=:old.device_id;

update t_gps_status set device_id=:new.device_id

where device_id=:old.device_id;

end if;

end aft_update_user;

SQL觸發器總結

對於不可更新的檢視要進行更新時,可以用觸發器中的 instead of 進行更新 建立乙個插入操作的觸發器 當向學生選課表sc中插入一條記錄後,變更在學生表student對應學生的選課門數。create trigger stu in onsc 對哪個表或者檢視進行操作 forinsert 設定觸發條...

SQL Server觸發器總結

觸發器的簡介 觸發器 trigger 是sql server 提供給程式設計師和資料分析員來保證資料完整性的一種方法,它是與表事件相關的特殊的儲存過程,它的執行不是由程式呼叫,也不是手工啟動,而是由事件來觸發,比如當對乙個表進行操作 insert,delete,update 時就會啟用它執行。觸發器...

Sql After觸發器總結

sql解髮器,雖然對它有一定認識,但自從我工作這近四年來,還沒有寫過解髮器,我想也有很多朋友像我一樣,雖然經常使用ado.net,但無非都是些增刪改查的操作。解髮器的應用比起儲存過程可謂要少的多,至到時最近的乙個專案需求,讓我想到了解髮器的應用場景。往往乙個公司的it部門會根據職能或者是業務劃分,每...