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

MySQL觸發(fā)器的使用和inserted和deleted表介紹

 更新時(shí)間:2023年05月17日 08:43:31   作者:谷艷爽faye  
這篇文章主要介紹了MySQL觸發(fā)器的使用和inserted和deleted表,觸發(fā)器,就是一種特殊的存儲(chǔ)過程,觸發(fā)器和存儲(chǔ)過程一樣是一個(gè)能夠完成特定功能和存儲(chǔ)在數(shù)據(jù)庫(kù)服務(wù)器上的SQL片段,感興趣想要詳細(xì)了解可以參考下文

背景

最近在項(xiàng)目中有需求是當(dāng)人員表中有變動(dòng)時(shí)(比如:增加人員、修改人員信息、刪除人員信息)需要把這張表中的變動(dòng)的信息同步到它對(duì)應(yīng)的日志表中。那么如果用代碼寫邏輯的話在執(zhí)行效率上會(huì)比較慢,正好sqlserver提供了觸發(fā)器,我們可以利用觸發(fā)器進(jìn)行解決這個(gè)問題。

什么時(shí)sqlserver觸發(fā)器

觸發(fā)器是在對(duì)表進(jìn)行插入、更新或刪除操作時(shí)自動(dòng)執(zhí)行的特殊存儲(chǔ)過程。觸發(fā)器通常用于強(qiáng)制業(yè)務(wù)規(guī)則,觸發(fā)器是一種高級(jí)約束,可以定義比CHECK約束更為復(fù)雜的約束:可以執(zhí)行復(fù)雜的SQL語(yǔ)句(if/while/case),可以引用其他表中的列。觸發(fā)器定義在特定的表上,與表相關(guān),自動(dòng)觸發(fā)執(zhí)行,不能直接調(diào)用,是一個(gè)事務(wù)(可回滾)。

觸發(fā)器的種類

觸發(fā)器是在對(duì)表進(jìn)行增、刪、改操作才能夠觸發(fā)觸發(fā)器。這里分為after(之后)和instead of(之前)觸發(fā)。after觸發(fā)器要求只有執(zhí)行某一操作(insert、update、delete)之后觸發(fā)器才能被觸發(fā),且只能定義在表上。而instead of觸發(fā)器表示并不執(zhí)行其定義的操作(insert、update、delete)而僅是執(zhí)行觸發(fā)器本身,其優(yōu)先級(jí)高于觸發(fā)語(yǔ)句的執(zhí)行。

觸發(fā)器的使用

以下內(nèi)容介紹after之后的觸發(fā)器。以navicat工具為例。

首先我們需要監(jiān)測(cè)哪個(gè)數(shù)據(jù)庫(kù)就在哪個(gè)數(shù)據(jù)庫(kù)創(chuàng)建觸發(fā)器。比如:需要監(jiān)聽人員表中的數(shù)據(jù)變化,那么就需要在人員表中添加觸發(fā)器。點(diǎn)擊表的設(shè)計(jì),找到觸發(fā)器

在上方點(diǎn)擊添加觸發(fā)器,并設(shè)置觸發(fā)器的名稱以及觸發(fā)的時(shí)間和在什么情況下觸發(fā)。

設(shè)置完這些之后可以去寫邏輯

首先介紹一下sql觸發(fā)器中兩個(gè)表,inserted和deleted??梢岳斫鉃檫@兩張表是臨時(shí)表,它的表字段和在哪個(gè)表中創(chuàng)建觸發(fā)器的字段是一致的,比如:我在人員管理表中添加了觸發(fā)器,那么inserted表和deleted表中的字段是一致的。這兩張表是系統(tǒng)在內(nèi)存中創(chuàng)建的兩張表,不會(huì)存儲(chǔ)到數(shù)據(jù)庫(kù)中,且這兩張表是只讀的,不能修改數(shù)據(jù)。當(dāng)觸發(fā)器完成工作之后,這兩張表也會(huì)被刪除

表操作inserted表deleted表
insert存放新增的記錄
update存放新增的記錄存放更新前的數(shù)據(jù)
delete存放新增的數(shù)據(jù)

舉例:

BEGIN
-- 			if EXISTS (select * from deleted)    //判斷deleted表中是否有數(shù)據(jù)
		declare @is_delete char(20)       //定義變量
		if EXISTS(
			select is_delete from inserted  
		)
		declare @userId varchar(20)
		declare @userName VARCHAR(20)
		declare @machineId VARCHAR(40)
		declare @operator_Id VARCHAR(20)
		declare @operator varchar(20)
		select @is_delete=is_delete,@userId=user_id,@userName=user_name,@machineId=machine_id,@operator_Id=update_user_id,@operator=update_user_name FROM inserted   //給變量賦值
		IF @is_delete=1  判斷條件
		BEGIN
		insert into User_Management_Logs(user_id,user_name,act,machine_id,operator,operator_id) VALUES(@userId,@userName,'刪除用戶',@machineId,@operator,@operator_Id)  //在哪張表中插入數(shù)據(jù)
	END
END

到此這篇關(guān)于MySQL觸發(fā)器的使用和inserted和deleted表介紹的文章就介紹到這了,更多相關(guān)MySQL觸發(fā)器內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 庫(kù)名表名大小寫問題與sqlserver兼容的啟動(dòng)配置方法

    庫(kù)名表名大小寫問題與sqlserver兼容的啟動(dòng)配置方法

    庫(kù)名表名大小寫問題與sqlserver兼容的啟動(dòng)配置方法,需要的朋友可以參考下。
    2010-12-12
  • MySQL8.0.3 RC版即將發(fā)布 先來看看有哪些變化

    MySQL8.0.3 RC版即將發(fā)布 先來看看有哪些變化

    MySQL8.0.3 RC版即將發(fā)布,這篇文章主要介紹了MySQL8.0.3 RC版的一些新變化,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-09-09
  • MySQL查詢性能優(yōu)化的7個(gè)常見查詢錯(cuò)誤及解決方案

    MySQL查詢性能優(yōu)化的7個(gè)常見查詢錯(cuò)誤及解決方案

    數(shù)據(jù)庫(kù)性能是Web應(yīng)用和大型軟件系統(tǒng)穩(wěn)定運(yùn)行的關(guān)鍵,即使是精心設(shè)計(jì)的應(yīng)用,如果數(shù)據(jù)庫(kù)查詢效率低下,也會(huì)導(dǎo)致用戶體驗(yàn)下降、系統(tǒng)資源浪費(fèi),甚至系統(tǒng)崩潰,本文將深入探討MySQL查詢優(yōu)化,分析常見的查詢錯(cuò)誤,并提供提升數(shù)據(jù)庫(kù)性能的實(shí)用技巧,需要的朋友可以參考下
    2025-04-04
  • MySQL中怎么匹配年月

    MySQL中怎么匹配年月

    一般數(shù)據(jù)庫(kù)中給到的時(shí)間都是年-月-日形式的,那怎么匹配年-月/的形式呢,下面通過實(shí)例代碼介紹怎么在數(shù)據(jù)庫(kù)中查詢到關(guān)于2021年8月的數(shù)據(jù),對(duì)mysql匹配年月相關(guān)知識(shí),感興趣的朋友跟隨小編一起看看吧
    2024-04-04
  • MySQL數(shù)據(jù)庫(kù)升級(jí)的一些

    MySQL數(shù)據(jù)庫(kù)升級(jí)的一些"陷阱"

    這篇文章主要介紹了MySQL數(shù)據(jù)庫(kù)升級(jí)需要注意的地方,幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-08-08
  • mysql中json的使用方式詳解

    mysql中json的使用方式詳解

    這篇文章主要介紹了mysql中json的使用,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-04-04
  • IOS 數(shù)據(jù)庫(kù)升級(jí)數(shù)據(jù)遷移的實(shí)例詳解

    IOS 數(shù)據(jù)庫(kù)升級(jí)數(shù)據(jù)遷移的實(shí)例詳解

    這篇文章主要介紹了IOS 數(shù)據(jù)庫(kù)升級(jí)數(shù)據(jù)遷移的實(shí)例詳解的相關(guān)資料,這里提供實(shí)例幫助大家解決數(shù)據(jù)庫(kù)升級(jí)及數(shù)據(jù)遷移的問題,需要的朋友可以參考下
    2017-07-07
  • mysql創(chuàng)建的外鍵無法保存的原因以及處理辦法

    mysql創(chuàng)建的外鍵無法保存的原因以及處理辦法

    這篇文章主要介紹了mysql創(chuàng)建的外鍵無法保存的原因以及處理辦法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • MySql與Navicat安裝教程分享

    MySql與Navicat安裝教程分享

    這篇文章主要介紹了MySql與Navicat安裝教程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • PHP使用mysqli擴(kuò)展連接MySQL數(shù)據(jù)庫(kù)

    PHP使用mysqli擴(kuò)展連接MySQL數(shù)據(jù)庫(kù)

    這篇文章主要介紹了PHP使用mysqli擴(kuò)展連接MySQL數(shù)據(jù)庫(kù),需要的朋友可以參考下
    2014-08-08

最新評(píng)論

广东省| 四川省| 驻马店市| 大渡口区| 绍兴市| 卫辉市| 双流县| 乌鲁木齐市| 永丰县| 新兴县| 扶风县| 阳城县| 苏尼特左旗| 定边县| 昂仁县| 仁布县| 平利县| 石首市| 静安区| 新晃| 辽阳县| 房山区| 若羌县| 镇远县| 英超| 上思县| 全南县| 佛学| 英德市| 常山县| 舟曲县| 遂溪县| 大港区| 福建省| 嘉义市| 郴州市| 平安县| 隆回县| 库尔勒市| 云阳县| 民丰县|