最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySQL深入淺出掌握觸發(fā)器用法

 更新時間:2022年05月17日 09:28:54   作者:TimeFriends  
觸發(fā)器是SQLserver提供給程序員和數(shù)據(jù)分析員來保證數(shù)據(jù)完整性的一種方法,它是與表事件相關(guān)的特殊的存儲過程,事件是在 MySQL 5.1后引入的,有點(diǎn)類似操作系統(tǒng)的計劃任務(wù),但是周期性任務(wù)是內(nèi)置在MySQL服務(wù)端執(zhí)行的

MySQL觸發(fā)器

觸發(fā)器是一種特殊的存儲過程,觸發(fā)器和存儲過程一樣是一個能完成特定功能、存儲在數(shù)據(jù)庫服務(wù)器上的SQL片段,但是觸發(fā)器無需調(diào)用,當(dāng)對數(shù)據(jù)庫表中的數(shù)據(jù)執(zhí)行DML操作時自動觸發(fā)這個SQL片段的執(zhí)行,無需手動調(diào)用.

在MySQL中,只要執(zhí)行insert,update,delete操作是才能觸發(fā)觸發(fā)器的執(zhí)行

觸發(fā)器的這種特性可以協(xié)助應(yīng)用在數(shù)據(jù)庫端確保數(shù)據(jù)的完整性,日志記錄,數(shù)據(jù)校驗等操作.

使用別名OLD和NEW來引用觸發(fā)器中發(fā)生變化的記錄內(nèi)容,這與其他的數(shù)據(jù)庫是相似的,現(xiàn)在觸發(fā)器還值支持行級觸發(fā),不支持語句級觸發(fā).

觸發(fā)器的特性

① 什么條件會觸發(fā): insert,delete,update

② 什么時候觸發(fā): 在增刪改前或者后

③ 觸發(fā)頻率: 針對每一行執(zhí)行

④ 觸發(fā)器定義在表上,附著在表上

創(chuàng)建觸發(fā)器

-- 創(chuàng)建只有一個執(zhí)行語句的觸發(fā)器
格式:
    create trigger 觸發(fā)器名 before|after 觸發(fā)事件
    on 表名 for each row
    執(zhí)行語句;

-- 創(chuàng)建有多個執(zhí)行語句的觸發(fā)器
格式:
    create trigger 觸發(fā)器名 before|after 觸發(fā)事件
    on 表名 for each row
    begin
        執(zhí)行語句列表
    end;

demo

-- 需求:當(dāng)user表添加一行數(shù)據(jù),則會自動在user_log添加日志記錄

delimiter $$
create trigger trigger_test after insert
on user for each row
begin
    insert into user_logs values(1,now,'有新用戶增加');
end $$
delimiter;

觸發(fā)器操作-NEW和OLD

mysql中定義了new和old,用來表示觸發(fā)器的所在表中,觸發(fā)了觸發(fā)器的哪一行數(shù)據(jù),來引用觸發(fā)器中發(fā)生變化的記錄內(nèi)容,具體如下

觸發(fā)器類型觸發(fā)器類型NEW和OLD的使用
INSERT 型觸發(fā)器NEW 表示將要或者已經(jīng)新增的數(shù)據(jù)
UPDATE 型觸發(fā)器OLD 表示修改之前的數(shù)據(jù),NEW表示將要或者已經(jīng)修改后的數(shù)據(jù)
DELETE 型觸發(fā)器OLD 表示將要或者已經(jīng)刪除的數(shù)據(jù)

使用方法: NEW.columnName(columnName為相應(yīng)數(shù)據(jù)表某一列名)

demo

-- insert
	delimiter &&
	create trigger test1 after  insert
	on user for each row
	begin
		insert into user_logs values(1,now,concat('有新用戶增加,信息為',NEW.uid,NEW.username,NEW.password));
	end $$
	delimiter;
-- update
delimiter &&
	create trigger test2 after update
	on user for each row
	begin
		insert into user_logs values(1,now,concat('修改用戶,之前信息為',OLD.uid,OLD.username,OLD.password,'修改之后的信息為',NEW.uid,NEW.username,NEW.password));
	end $$
	delimiter;
-- delete
delimiter &&
	create trigger test3 after delete
	on user for each row
	begin
		insert into user_logs values(1,now,concat('有用戶刪除,信息為',OLD.uid,OLD.username,OLD.password));
	end $$
	delimiter;

觸發(fā)器-查看

show triggers;

觸發(fā)器-刪除

drop trigger if exists trigger_test;

觸發(fā)器的注意事項

① MYSQL中觸發(fā)器中不能對本表進(jìn)行insert,update,delete操作,以免遞歸循環(huán)觸發(fā)

② 盡量少使用觸發(fā)器,假設(shè)觸發(fā)器觸發(fā)每次執(zhí)行1s,insert table 500條數(shù)據(jù),那么就需要觸發(fā)500次觸發(fā)器,光是觸發(fā)器執(zhí)行的時間就要花費(fèi)500s,而insert 500條數(shù)據(jù)一共是1s,那么insert的效率就非常的低了.

③ 觸發(fā)器是針對每一行的,對增刪改非常頻繁的表上切記不要使用觸發(fā)器,因為他會非常消耗資源.

到此這篇關(guān)于MySQL深入淺出掌握觸發(fā)器用法的文章就介紹到這了,更多相關(guān)MySQL觸發(fā)器內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • MySQL連接及基本信息查看命令匯總

    MySQL連接及基本信息查看命令匯總

    這篇文章主要針對MySQL連接及基本信息查看命令進(jìn)行了詳細(xì)匯總,感興趣的小伙伴們可以參考一下
    2016-02-02
  • QT連接Mysql數(shù)據(jù)庫的詳細(xì)教程(親測成功版)

    QT連接Mysql數(shù)據(jù)庫的詳細(xì)教程(親測成功版)

    被Qt連接數(shù)據(jù)庫折磨了三天之后終于連接成功了,記錄一下希望對看到的人有所幫助,下面這篇文章主要給大家介紹了關(guān)于QT連接Mysql數(shù)據(jù)庫的詳細(xì)教程,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2023-05-05
  • MySQL關(guān)鍵字Distinct的詳細(xì)介紹

    MySQL關(guān)鍵字Distinct的詳細(xì)介紹

    這篇文章主要介紹了MySQL關(guān)鍵字Distinct的詳細(xì)介紹的相關(guān)資料,需要的朋友可以參考下
    2017-07-07
  • mysql建表常用sql語句個人經(jīng)驗分享

    mysql建表常用sql語句個人經(jīng)驗分享

    熟悉一些常用的建表語句可以提升你建表的速度效率,本文整理了一些,個人感覺還不錯,希望對大家有所幫助
    2014-01-01
  • MySQL數(shù)據(jù)表的常見約束小結(jié)

    MySQL數(shù)據(jù)表的常見約束小結(jié)

    在數(shù)據(jù)庫設(shè)計中,約束(Constraints)是用于確保數(shù)據(jù)的完整性、準(zhǔn)確性和一致性的規(guī)則,MySQL?提供了多種約束類型,幫助我們規(guī)范數(shù)據(jù)存儲,本文給大家介紹了MySQL數(shù)據(jù)表的常見約束,需要的朋友可以參考下
    2024-12-12
  • 解壓版MYSQL中文亂碼問題解決方案

    解壓版MYSQL中文亂碼問題解決方案

    這篇文章主要介紹了解壓版MYSQL中文亂碼問題解決方案,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-09-09
  • 一文帶你了解MySQL中觸發(fā)器的操作

    一文帶你了解MySQL中觸發(fā)器的操作

    觸發(fā)器,就是一種特殊的存儲過程。觸發(fā)器和存儲過程一樣是一個能夠完成特定功能、存儲在數(shù)據(jù)庫服務(wù)器上的SQL片段。本文將通過簡單的實力介紹一下觸發(fā)器的操作,需要的可以參考一下
    2023-02-02
  • MySQL事務(wù)的隔離性是如何實現(xiàn)的

    MySQL事務(wù)的隔離性是如何實現(xiàn)的

    最近做了一些分布式事務(wù)的項目,對事務(wù)的隔離性有了更深的認(rèn)識,后續(xù)寫文章聊分布式事務(wù)。今天就復(fù)盤一下單機(jī)事務(wù)的隔離性是如何實現(xiàn)的?感興趣的可以了解一下-
    2021-09-09
  • 關(guān)于數(shù)據(jù)庫中保留小數(shù)位的問題

    關(guān)于數(shù)據(jù)庫中保留小數(shù)位的問題

    本篇文章是對關(guān)于在數(shù)據(jù)庫中保留小數(shù)位的問題進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-07-07
  • MySQL kill不掉線程的原因

    MySQL kill不掉線程的原因

    這篇文章主要介紹了MySQL kill不掉線程的原因,幫助大家更好的理解和學(xué)習(xí)使用MySQL數(shù)據(jù)庫,感興趣的朋友可以了解下
    2021-05-05

最新評論

承德市| 琼中| 台南县| 南宁市| 醴陵市| 永丰县| 彭阳县| 正阳县| 乃东县| 大连市| 罗平县| 新竹市| 河东区| 宝山区| 富阳市| 岳池县| 延边| 海城市| 新民市| 蚌埠市| 寻甸| 乌拉特中旗| 塘沽区| 泾源县| 灵宝市| 滕州市| 宁安市| 建昌县| 鲜城| 庆城县| 惠水县| 兰考县| 拜泉县| 广宗县| 岚皋县| 英德市| 萝北县| 舞阳县| 自治县| 兴国县| 祁连县|