婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > mysql觸發器簡介、創建觸發器及使用限制分析

mysql觸發器簡介、創建觸發器及使用限制分析

熱門標簽:銷售語音電話機器人 安徽ai電話電銷機器人有效果嗎 萊西市地圖標注 外呼系統電銷受騙 走過哪個省地圖標注 巫師三血與酒地圖標注 常州網絡外呼系統開發 在哪里申請400電話 400電話申請信用卡

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

簡介

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

完事我們來看下SQL觸發器的優點:

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

再來看下它的缺點:

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

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

創建觸發器

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

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

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

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

例如,before_order_update是更新orders表中的行數據之前調用的觸發器。我們再來看一種定義方式:

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

例如,order_before_update與上述before_order_update觸發器相同。

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

  • tablename.TRG文件將觸發器映射到相應的表。
  • triggername.TRN文件包含觸發器定義。

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

使用限制

mysql觸發器覆蓋標準SQL中定義的所有功能,但是,在應用程序中使用它們也會有一些限制:

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

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

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

希望本文所述對大家MySQL數據庫計有所幫助。

您可能感興趣的文章:
  • mysql 觸發器語法與應用示例
  • MySql視圖觸發器存儲過程詳解
  • mysql觸發器原理與用法實例分析
  • mysql日志觸發器實現代碼
  • mysql觸發器之觸發器的增刪改查操作示例
  • mysql觸發器之創建多個觸發器操作實例分析
  • mysql觸發器之創建使用觸發器簡單示例
  • MySQL 觸發器定義與用法簡單實例
  • MySQL觸發器概念、原理與用法詳解
  • Mysql中禁用與啟動觸發器教程【推薦】
  • 詳解MySQL數據庫之觸發器

標簽:陽江 黃石 果洛 來賓 煙臺 鞍山 赤峰 河北

巨人網絡通訊聲明:本文標題《mysql觸發器簡介、創建觸發器及使用限制分析》,本文關鍵詞  mysql,觸發器,簡介,創建,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《mysql觸發器簡介、創建觸發器及使用限制分析》相關的同類信息!
  • 本頁收集關于mysql觸發器簡介、創建觸發器及使用限制分析的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 塔城市| 油尖旺区| 修武县| 会宁县| 南投市| 油尖旺区| 三江| 长阳| 兰考县| 育儿| 会宁县| 大竹县| 讷河市| 福安市| 新密市| 聊城市| 娱乐| 太白县| 岑巩县| 盘山县| 通河县| 图木舒克市| 万安县| 富锦市| 宁乡县| 嘉定区| 隆化县| 紫阳县| 萨嘎县| 区。| 连州市| 八宿县| 昌图县| 荣昌县| 宣恩县| 崇义县| 衡水市| 镇原县| 淮南市| 兴安盟| 苍南县|