欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

背景

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

什么時sqlserver觸發(fā)器

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

觸發(fā)器的種類

觸發(fā)器是在對表進(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)先級高于觸發(fā)語句的執(zhí)行。

觸發(fā)器的使用

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

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

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

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

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

表操作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)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • MySQL忘記密碼恢復(fù)密碼的實現(xiàn)方法

    MySQL忘記密碼恢復(fù)密碼的實現(xiàn)方法

    流傳較廣的方法,mysql中文參考手冊上的,各位vps主機租用客戶和服務(wù)器托管用戶忘記mysql5.1管理員密碼時,可以使用這種方法破解下
    2008-07-07
  • mysql中find_in_set()函數(shù)的使用及in()用法詳解

    mysql中find_in_set()函數(shù)的使用及in()用法詳解

    這篇文章主要介紹了mysql中find_in_set()函數(shù)的使用以及in()用法詳解,需要的朋友可以參考下
    2018-07-07
  • MySQL服務(wù)器進(jìn)程CPU占用100%的解決方法

    MySQL服務(wù)器進(jìn)程CPU占用100%的解決方法

    早上幫朋友一臺服務(wù)器解決了 Mysql cpu 占用 100% 的問題。稍整理了一下,將經(jīng)驗記錄在這篇文章里。
    2010-12-12
  • mysql百萬數(shù)據(jù)表加索引優(yōu)化的方法

    mysql百萬數(shù)據(jù)表加索引優(yōu)化的方法

    在大數(shù)據(jù)時代,隨著數(shù)據(jù)量的快速增長,對數(shù)據(jù)庫的索引優(yōu)化變得尤為重要,本文主要介紹了mysql百萬數(shù)據(jù)表加索引優(yōu)化的方法,感興趣的可以了解一下
    2024-02-02
  • MySQL中字段名和保留字沖突的解決辦法

    MySQL中字段名和保留字沖突的解決辦法

    這篇文章主要介紹了MySQL中字段名和保留字沖突的解決辦法,其實只需要用撇號把字段名括起來就可以了,這樣在select、insert、update、delete語句中都不會有問題,需要的朋友可以參考下
    2014-06-06
  • MySQL服務(wù)器的SSD性能問題分析和測試詳解

    MySQL服務(wù)器的SSD性能問題分析和測試詳解

    這篇文章主要給大家介紹了關(guān)于MySQL服務(wù)器的SSD性能問題分析和測試的相關(guān)資料,文中圖文介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-11-11
  • 解析MySQL索引的作用

    解析MySQL索引的作用

    這篇文章主要為大家詳細(xì)介紹了MySQL索引的作用,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • Mysql技術(shù)內(nèi)幕之InnoDB鎖的深入講解

    Mysql技術(shù)內(nèi)幕之InnoDB鎖的深入講解

    這篇文章主要給大家介紹了關(guān)于Mysql技術(shù)內(nèi)幕之InnoDB鎖的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • mysql實現(xiàn)sequence功能的代碼

    mysql實現(xiàn)sequence功能的代碼

    今天小編就為大家分享一篇關(guān)于mysql實現(xiàn)sequence功能的代碼,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-03-03
  • mysql 5.7.15 安裝配置方法圖文教程(windows)

    mysql 5.7.15 安裝配置方法圖文教程(windows)

    這篇文章主要為大家詳細(xì)介紹了mysql 5.7.15 安裝配置方法圖文教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-07-07

最新評論