觸發器總結
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部門會根據職能或者是業務劃分,每...