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

mysql觸發(fā)器簡介、創(chuàng)建觸發(fā)器及使用限制分析

 更新時間:2019年12月16日 10:02:59   作者:luyaran  
這篇文章主要介紹了mysql觸發(fā)器簡介、創(chuàng)建觸發(fā)器及使用限制,結(jié)合實例形式分析了mysql觸發(fā)器的功能、原理、創(chuàng)建、用法及操作注意事項,需要的朋友可以參考下

本文實例講述了mysql觸發(fā)器簡介、創(chuàng)建觸發(fā)器及使用限制。分享給大家供大家參考,具體如下:

簡介

SQL觸發(fā)器是存儲在數(shù)據(jù)庫目錄中的一組SQL語句。每當(dāng)與表相關(guān)聯(lián)的事件發(fā)生時,即會執(zhí)行或觸發(fā)SQL觸發(fā)器,例如插入,更新或刪除。SQL觸發(fā)器也可以當(dāng)做是一種特殊類型的存儲過程。 它是特別的,因為它不像直接像存儲過程那樣調(diào)用。 觸發(fā)器和存儲過程之間的主要區(qū)別在于,當(dāng)對表執(zhí)行數(shù)據(jù)修改事件時,會自動調(diào)用觸發(fā)器,而存儲過程必須要明確地調(diào)用。

完事我們來看下SQL觸發(fā)器的優(yōu)點(diǎn):

  • SQL觸發(fā)器提供了檢查數(shù)據(jù)完整性的替代方法。
  • SQL觸發(fā)器可以捕獲數(shù)據(jù)庫層中業(yè)務(wù)邏輯中的錯誤。
  • SQL觸發(fā)器提供了運(yùn)行計劃任務(wù)的另一種方法。通過使用SQL觸發(fā)器,您不必等待運(yùn)行計劃的任務(wù),因為在對表中的數(shù)據(jù)進(jìn)行更改之前或之后自動調(diào)用觸發(fā)器。
  • SQL觸發(fā)器對于審核表中數(shù)據(jù)的更改非常有用。

再來看下它的缺點(diǎn):

  • SQL觸發(fā)器只能提供擴(kuò)展驗證,并且無法替換所有驗證。一些簡單的驗證必須在應(yīng)用層完成。 例如,您可以使用JavaScript或服務(wù)器端使用服務(wù)器端腳本語言(如JSP,PHP,ASP.NET,Perl等)來驗證客戶端的用戶輸入。
  • 從客戶端應(yīng)用程序調(diào)用和執(zhí)行SQL觸發(fā)器不可見,因此很難弄清數(shù)據(jù)庫層中發(fā)生的情況。
  • SQL觸發(fā)器可能會增加數(shù)據(jù)庫服務(wù)器的開銷。

既然觸發(fā)器都是一種特殊的存儲過程了,那么我們在它們中間該如何取舍呢?在下只是建議下,如果我們無法使用存儲過程完成工作時,可以考慮使用下SQL觸發(fā)器。

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

在MySQL中,觸發(fā)器是一組SQL語句,當(dāng)對相關(guān)聯(lián)的表上的數(shù)據(jù)進(jìn)行更改時,會自動調(diào)用該語句。 觸發(fā)器可以被定義為在insert,update或delete語句更改數(shù)據(jù)之前或之后調(diào)用。在MySQL5.7.2版本之前,每個表最多可以定義六個觸發(fā)器。我們來看下它們的簡單介紹:

  • BEFORE INSERT - 在數(shù)據(jù)插入表之前被激活觸發(fā)器。
  • AFTER INSERT - 在將數(shù)據(jù)插入表之后激活觸發(fā)器。
  • BEFORE UPDATE - 在表中的數(shù)據(jù)更新之前激活觸發(fā)器。
  • AFTER UPDATE - 在表中的數(shù)據(jù)更新之后激活觸發(fā)器。
  • BEFORE DELETE - 在從表中刪除數(shù)據(jù)之前激活觸發(fā)器。
  • AFTER DELETE - 從表中刪除數(shù)據(jù)之后激活觸發(fā)器。

但是,從MySQL 5.7.2+版本開始,可以為相同的觸發(fā)事件和動作時間定義多個觸發(fā)器。當(dāng)使用不使用INSERT,DELETE或UPDATE語句更改表中數(shù)據(jù)的語句時,不會調(diào)用與表關(guān)聯(lián)的觸發(fā)器。 例如,truncate語句刪除表的所有數(shù)據(jù),但不調(diào)用與該表相關(guān)聯(lián)的觸發(fā)器。但是,有些語句使用了后臺的INSERT語句,如REPLACE語句或LOAD DATA語句。如果使用這些語句,則調(diào)用與表關(guān)聯(lián)的相應(yīng)觸發(fā)器。所以我們必須要為與表相關(guān)聯(lián)的每個觸發(fā)器使用唯一的名稱??梢詾椴煌谋矶x相同的觸發(fā)器名稱,這是一個很好的做法。我們來看下定義觸發(fā)器的語法結(jié)構(gòu):

(BEFORE | AFTER)_tableName_(INSERT| UPDATE | DELETE)

例如,before_order_update是更新orders表中的行數(shù)據(jù)之前調(diào)用的觸發(fā)器。我們再來看一種定義方式:

tablename_(BEFORE | AFTER)_(INSERT| UPDATE | DELETE)

例如,order_before_update與上述before_order_update觸發(fā)器相同。

mysql會在在數(shù)據(jù)目錄中存儲觸發(fā)器,例如:/data/luyaran/,并使用名為tablename.TRG和triggername.TRN的文件:

  • tablename.TRG文件將觸發(fā)器映射到相應(yīng)的表。
  • triggername.TRN文件包含觸發(fā)器定義。

所以我們可以通過將觸發(fā)器文件復(fù)制到備份文件夾來備份mysql觸發(fā)器,還可以使用mysqldump工具備份觸發(fā)器。

使用限制

mysql觸發(fā)器覆蓋標(biāo)準(zhǔn)SQL中定義的所有功能,但是,在應(yīng)用程序中使用它們也會有一些限制:

  • 使用在SHOW,LOAD DATA,LOAD TABLE,BACKUP DATABASE,RESTORE,F(xiàn)LUSH和RETURN語句之上。
  • 使用隱式或明確提交或回滾的語句,如COMMIT,ROLLBACK,START TRANSACTION,LOCK/UNLOCK TABLES,ALTER,CREATE,DROP,RENAME等。
  • 使用準(zhǔn)備語句,如PREPARE,EXECUTE等
  • 使用動態(tài)SQL語句。

好啦,本次記錄就到這里了。

更多關(guān)于MySQL相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《MySQL查詢技巧大全》、《MySQL事務(wù)操作技巧匯總》、《MySQL存儲過程技巧大全》、《MySQL數(shù)據(jù)庫鎖相關(guān)技巧匯總》及《MySQL常用函數(shù)大匯總

希望本文所述對大家MySQL數(shù)據(jù)庫計有所幫助。

相關(guān)文章

  • MySQL?數(shù)據(jù)庫?增刪查改、克隆、外鍵?等操作總結(jié)

    MySQL?數(shù)據(jù)庫?增刪查改、克隆、外鍵?等操作總結(jié)

    這篇文章主要介紹了MySQL?數(shù)據(jù)庫?增刪查改、克隆、外鍵?等操作,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-05-05
  • MySQL5.6下windows msi安裝詳細(xì)介紹

    MySQL5.6下windows msi安裝詳細(xì)介紹

    這篇文章主要介紹了MySQL5.6下windows msi安裝詳細(xì)介紹,介紹的非常詳細(xì),具有參考借鑒價值,需要的朋友可以參考下
    2016-08-08
  • MySQL如何添加環(huán)境變量和初始化MySQL

    MySQL如何添加環(huán)境變量和初始化MySQL

    本文主要介紹了如何在Windows系統(tǒng)中添加MySQL的環(huán)境變量以及如何初始化MySQL,通過添加環(huán)境變量,可以在任意一個命令提示符中直接調(diào)用MySQL的相關(guān)程序,大大簡化了操作,初始化MySQL時,需要新建一個配置文件并指定默認(rèn)編碼集和存儲引擎,如果初始化過程中出現(xiàn)錯誤
    2024-11-11
  • mysql?8.0.30?降級到?8.0.27的詳細(xì)步驟

    mysql?8.0.30?降級到?8.0.27的詳細(xì)步驟

    這篇文章主要介紹了mysql?8.0.30?降級到?8.0.27,本文分步驟給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-09-09
  • 運(yùn)用mysqldump 工具時需要注意的問題

    運(yùn)用mysqldump 工具時需要注意的問題

    用mysqldump 導(dǎo)出 Trigger 的時候遇到一個問題,貼出來,以免大家犯錯。
    2009-07-07
  • MySQL自定義函數(shù)簡單用法示例

    MySQL自定義函數(shù)簡單用法示例

    這篇文章主要介紹了MySQL自定義函數(shù)簡單用法,結(jié)合實例形式分析了mysql自定義函數(shù)的基本定義、使用方法及操作注意事項,需要的朋友可以參考下
    2018-12-12
  • 解決mysql連接錯誤errorCode 0,state 08S01

    解決mysql連接錯誤errorCode 0,state 08S01

    這篇文章主要介紹了解決mysql連接錯誤errorCode 0,state 08S01,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • 生產(chǎn)環(huán)境的MySQL事務(wù)隔離級別方式

    生產(chǎn)環(huán)境的MySQL事務(wù)隔離級別方式

    本文探討了MySQL數(shù)據(jù)庫在RR(可重復(fù)讀)和RC(讀已提交)隔離級別下的鎖機(jī)制,在RR級別下,UPDATE語句會鎖定所有符合條件的行,包括不符合條件的行,以防止幻讀,而在RC級別下,UPDATE語句僅鎖定符合條件的行,通過半一致性讀優(yōu)化,可以進(jìn)一步提高并發(fā)度
    2025-02-02
  • MySQL實戰(zhàn)之Insert語句的使用心得

    MySQL實戰(zhàn)之Insert語句的使用心得

    這篇文章主要給大家介紹了關(guān)于MySQL實戰(zhàn)之Insert語句的使用心得的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • MySQL8新特性:持久化全局變量的修改方法

    MySQL8新特性:持久化全局變量的修改方法

    這篇文章主要給大家介紹了關(guān)于MySQL 8新特性:持久化全局變量的修改的相關(guān)內(nèi)容,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-07-07

最新評論

江都市| 宁河县| 招远市| 民丰县| 井研县| 长治县| 简阳市| 哈巴河县| 湟源县| 呼伦贝尔市| 乃东县| 平定县| 莆田市| 长沙市| 西林县| 呈贡县| 肇州县| 临桂县| 合川市| 静宁县| 新营市| 延庆县| 竹北市| 延边| 定州市| 托克逊县| 稷山县| 嘉义市| 赤壁市| 奉节县| 安达市| 孟连| 新兴县| 雷州市| 扎兰屯市| 长春市| 贺兰县| 莒南县| 武陟县| 琼中| 亳州市|