MySQL學習總結之觸發器詳解

2022-03-14 19:00:37
本篇文章給大家帶來了關於的相關知識,其中主要介紹了關於觸發器的相關問題,觸發器,就是⼀種特殊的儲存過程,觸發器和儲存過程⼀樣是⼀個能夠完成特定功能、儲存,希望對大家有幫助。

推薦學習:

觸發器

一、觸發器的介紹

觸發器,就是⼀種特殊的儲存過程。觸發器和儲存過程⼀樣是⼀個能夠完成特定功能、儲存

在資料庫伺服器上的SQL⽚段,但是觸發器⽆需調⽤,當對資料表中的資料執⾏DML操作時

⾃動觸發這個SQL⽚段的執⾏,⽆需⼿動調⽤。

在MySQL,只有執⾏insert\delete\update操作才能觸發觸發器的執⾏。

二、 觸發器使用

1.建立觸發器

create trigger tri_name   -- tri_name:觸發器別名
<before|after> 						-- 定義觸發時機
<insert|delete|update>		-- 定義DML型別
ON <table_name>						-- 要觸發的表
for each <row|statement>							
-- for each row 宣告為⾏級觸發器(操作的每⼀條記錄就觸發觸發器執⾏⼀次)
-- for each statement 宣告語句級觸發器(觸發動作體執行一次)
begin											-- 當只有一句sql語句時,begin...end 可以省略	
	sql_statement 					-- 進行觸發器對應的DML型別的操作
end;


#範例
-- 建立觸發器:當學⽣資訊表發⽣新增操作時,則向⽇志資訊表中記錄⼀條⽇志
create trigger tri_test1
after insert on students
for each row
insert into stulogs(time,log_text) values(now(), concat('添 加',NEW.stu_num,'學⽣資訊'));

2.檢視觸發器

#檢視全部觸發器
show triggers;

#檢視觸發器的建立語句
show create trigger 觸發器名字;

3.刪除觸發器

觸發器不能修改,只能刪除

drop trigger  觸發器名字;

三、 NEW與OLD

觸發器⽤於監聽對資料表中資料的insert、delete、update操作,在觸發器中通常處理

⼀些DML的關聯操作;我們可以使⽤ NEW 和 OLD 關鍵字在觸發器中獲取觸發這個觸發器

的DML操作的資料

  • NEW : 在觸發器中⽤於獲取insert操作新增的資料、update操作修改後的記錄
  • OLD:在觸發器中⽤於獲取delete操作刪除前的資料、update操作修改前的資料

1.NEW的使用

#insert操作中:NEW表示新增的新記錄
create trigger tri_test1
after insert on students
for each row
insert into stulogs(time,log_text) values(now(), concat('添 加',NEW.stu_num,'學⽣資訊'));


#update操作中:NEW 表示修改後的資料
-- 建立觸發器 : 在監聽update操作的觸發器中,可以使⽤NEW獲取修改後的資料
create trigger tri_test2
after update on students for each row
insert into stulogs(time,log_text) values(now(), concat('修改學⽣資訊
為:',NEW.stu_num,NEW.stu_name));

2.OLD的使用

#delete操作中:OLD表示刪除的記錄
create trigger tri_test3
after delete on students for each row
insert into stulogs(time,log_text) values(now(), concat('刪 除',OLD.stu_num,'學⽣資訊')); 


#update操作中:OLD表示修改前的記錄
create trigger tri_test2
after update on students for each row
insert into stulogs(time,log_text) values(now(), concat('將學⽣姓名從
【',OLD.stu_name,'】修改為【',NEW.stu_name,'】'));

四、10.4 觸發器使⽤總結

1.優點

  • 觸發器是⾃動執⾏的,當對觸發器相關的表執⾏響應的DML操作時⽴即執⾏;
  • 觸發器可以實現表中的資料的級聯操作(關聯操作),有利於保證資料的完整性;
  • 觸發器可以對DML操作的資料進⾏更為複雜的合法性校驗

2.缺點

  • 使⽤觸發器實現的業務邏輯如果出現問題將難以定位,後期維護困難;
  • ⼤量使⽤觸發器容易導致程式碼結構雜亂,增加了程式的複雜性;
  • 當觸發器操作的資料量⽐較⼤時,執⾏效率會⼤⼤降低。

3.使⽤建議

在互聯⽹項⽬中,應避免適應觸發器;

對於並行量不⼤的項⽬可以選擇使⽤儲存過程,但是在互聯⽹引⽤中不提倡使⽤儲存過程

(原因:儲存過程時將實現業務的邏輯交給資料庫處理,⼀則增減了資料庫的負載,⼆則不利於資料庫的遷移)

推薦學習:

以上就是MySQL學習總結之觸發器詳解的詳細內容,更多請關注TW511.COM其它相關文章!