您好,登錄后才能下訂單哦!
這篇“MySQL觸發器然后使用”文章的知識點大部分人都不太理解,所以小編給大家總結了以下內容,內容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“MySQL觸發器然后使用”文章吧。
觸發器,就是?種特殊的存儲過程。觸發器和存儲過程?樣是?個能夠完成特定功能、存儲
在數據庫服務器上的SQL?段,但是觸發器?需調?,當對數據表中的數據執?DML操作時
?動觸發這個SQL?段的執?,?需?動調?。
在MySQL,只有執?insert\delete\update操作才能觸發觸發器的執?。
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,'學?信息'));
#查看全部觸發器 show triggers; #查看觸發器的創建語句 show create trigger 觸發器名字;
觸發器不能修改,只能刪除
drop trigger 觸發器名字;
觸發器?于監聽對數據表中數據的insert、delete、update操作,在觸發器中通常處理
?些DML的關聯操作;我們可以使? NEW 和 OLD 關鍵字在觸發器中獲取觸發這個觸發器
的DML操作的數據
NEW : 在觸發器中?于獲取insert操作添加的數據、update操作修改后的記錄
OLD:在觸發器中?于獲取delete操作刪除前的數據、update操作修改前的數據
#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));
#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,'】'));
觸發器是?動執?的,當對觸發器相關的表執?響應的DML操作時?即執?;
觸發器可以實現表中的數據的級聯操作(關聯操作),有利于保證數據的完整性;
觸發器可以對DML操作的數據進?更為復雜的合法性校驗
使?觸發器實現的業務邏輯如果出現問題將難以定位,后期維護困難;
?量使?觸發器容易導致代碼結構雜亂,增加了程序的復雜性;
當觸發器操作的數據量?較?時,執?效率會??降低。
在互聯?項?中,應避免適應觸發器;
對于并發量不?的項?可以選擇使?存儲過程,但是在互聯?引?中不提倡使?存儲過程
(原因:存儲過程時將實現業務的邏輯交給數據庫處理,?則增減了數據庫的負載,?則不利于數據庫的遷移)
以上就是關于“MySQL觸發器然后使用”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。