站長資訊網
        最全最豐富的資訊網站

        MySQL學習總結之觸發器詳解

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

        MySQL學習總結之觸發器詳解

        推薦學習:mysql教程

        觸發器

        一、觸發器的介紹

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

        在數據庫服務器上的SQL?段,但是觸發器?需調?,當對數據表中的數據執?DML操作時

        ?動觸發這個SQL?段的執?,?需?動調?。

        在MySQL,只有執?insertdeleteupdate操作才能觸發觸發器的執?。

        二、 觸發器使用

        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學習教程

        贊(0)
        分享到: 更多 (0)
        網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
        主站蜘蛛池模板: 日韩精品无码专区免费播放| 国产精品区一区二区三在线播放| 在线观看自拍少妇精品| 久久这里只有精品首页| 亚洲日韩一页精品发布| 国产精品美女久久久网AV| 日本VA欧美VA欧美VA精品| 精品久久久久久无码国产| 日本一区二区三区精品中文字幕| 无码囯产精品一区二区免费| 精品91自产拍在线观看二区| 999久久久国产精品| 2020国产精品永久在线| 亚洲精品乱码久久久久久蜜桃不卡 | 日韩精品人妻系列无码专区免费| 精品日韩在线视频一区二区三区| 98精品国产自产在线XXXX| 国产精品偷伦视频观看免费| 无码国产69精品久久久久网站| 欧美久久亚洲精品| 精品无码三级在线观看视频| 99热热久久这里只有精品68| 亚洲精品免费在线观看| 精品视频第一页| 6一12呦女精品| 成人国产精品高清在线观看| 99精品无人区乱码在线观看| …久久精品99久久香蕉国产| 国产精品久久久久无码av| 99国产欧美久久久精品蜜芽| 2022年国产精品久久久久| 国产精品99久久久久久人| 国产a精品视频| 久久福利青草精品资源站免费| 国产精品久久久久影视不卡| 亚洲第一精品在线视频| 成人一区二区三区精品| 国产精品青草视频免费播放 | 亚洲欧美激情精品一区二区| 亚洲综合av永久无码精品一区二区| 亚洲综合精品香蕉久久网|