1. 程式人生 > >mysql觸發器之建立簡單觸發器及限制

mysql觸發器之建立簡單觸發器及限制

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

  • BEFORE INSERT - 在資料插入表之前被啟用觸發器。
  • AFTER INSERT - 在將資料插入表之後啟用觸發器。
  • BEFORE UPDATE - 在表中的資料更新之前啟用觸發器。
  • AFTER UPDATE - 在表中的資料更新之後啟用觸發器。
  • BEFORE DELETE - 在從表中刪除資料之前啟用觸發器。
  • AFTER DELETE
    - 從表中刪除資料之後啟用觸發器。

但是,從MySQL 5.7.2+版本開始,可以為相同的觸發事件和動作時間定義多個觸發器。當使用不使用INSERTDELETEUPDATE語句更改表中資料的語句時,不會呼叫與表關聯的觸發器。 例如,truncate語句刪除表的所有資料,但不呼叫與該表相關聯的觸發器。但是,有些語句使用了後臺的INSERT語句,如REPLACE語句或LOAD DATA語句。如果使用這些語句,則呼叫與表關聯的相應觸發器。所以我們必須要為與表相關聯的每個觸發器使用唯一的名稱。可以為不同的表定義相同的觸發器名稱,這是一個很好的做法。我們來看下定義觸發器的語法結構:

(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.TRGtriggername.TRN的檔案:

  • tablename.TRG檔案將觸發器對映到相應的表。
  • triggername.TRN檔案包含觸發器定義。

所以我們可以通過將觸發器檔案複製到備份資料夾來備份mysql觸發器,還可以使用mysqldump工具備份觸發器。

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

  • 使用在SHOWLOAD DATALOAD TABLE,BACKUP DATABASE,RESTOREFLUSHRETURN語句之上。
  • 使用隱式或明確提交或回滾的語句,如COMMITROLLBACKSTART TRANSACTION,LOCK/UNLOCK TABLES,ALTERCREATEDROP,RENAME等。
  • 使用準備語句,如PREPAREEXECUTE
  • 使用動態SQL語句。

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

如果感覺不錯的話,請多多點贊支援哦。。。

相關推薦

mysql觸發器建立簡單觸發器限制

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

SQLServer建立LOGON觸發器

LOGON觸發器工作原理 登入觸發器將為響應 LOGON 事件而激發儲存過程。 與 SQL Server例項建立使用者會話時將引發此事件。 登入觸發器將在登入的身份驗證階段完成之後且使用者會話實際建立之前激發。 因此,來自觸發器內部且通常將到達使用者的所有訊息(例如錯

MySQL-SQL遊標,觸發器和事務

遊標的出現使得對一個查詢結果集的每一行結果能夠更細粒度的操作,現在MySQL只支援在儲存過程中定義儲存過程。一個遊標的使用過程是這樣的: * 使用 <declare 遊標名 cursor for 查詢語句> 定義一個遊標 * 使用 <ope

pythonpandas簡單介紹使用(一)

dad all 就會 能夠 簡單的 兩種 first 模型 自己 python之pandas簡單介紹及使用(一) 一、  Pandas簡介1、Python Data Analysis Library 或 pandas 是基於NumPy 的一種工具,該工具是為了解決數據分析任

mysql用法建立事件

1 建立事件:每天凌晨兩點自動刪除de_records表中七天以前的資料 CREATE EVENT event_delete_de_records_7days ON SCHEDULE EVERY 1 DAY STARTS '2018-01-01 02:00:00' DO DELETE FROM de_rec

mysql優化sql執行流程表結構(schema)對效能的影響

part 1 sql執行流程(如下圖所示) 1、客戶端傳送一條查詢到伺服器。 2、伺服器通過許可權檢查後,先檢查查詢快取,命中則直接返回結果。否則進入3。 3、伺服器進行sql解析,預處理,再由優化器根據該sql涉及到的資料表的資訊計算,生成執行計劃。 4.、MySQL根據優化器生成的執行計劃,呼叫儲

pythonpandas簡單介紹使用

一、  Pandas簡介1、Python Data Analysis Library 或 pandas 是基於NumPy 的一種工具,該工具是為了解決資料分析任務而建立的。Pandas 納入了大量庫和一些標準的資料模型,提供了高效地操作大型資料集所需的工具。pandas提供了大量能使我們快速便捷地處理資料的函

SharePoint 2013 入門教程建立頁面佈局頁面

  在SharePoint的使用過程中,頁面佈局和頁面時很重要的兩個概念,主要用於資料個性化展示,下面,我們簡單介紹一下SharePoint的頁面佈局和頁面的個性化。 一、 SharePoint頁面模型概述   如下圖,是SharePoint頁面模型圖,我們可以看出母版頁、

mysql檢視建立可更新檢視

我們知道,在mysql中,檢視不僅是可查詢的,而且是可更新的。這意味著我們可以使用insert或update語句通過可更新檢視插入或更新基表的行。 另外,我們還可以使用delete語句通過檢視刪除底層表的行。但是,要建立可更新檢視,定義檢視的select語句不能包含以下任何元

mysql學習check無效的解決觸發器的使用

修改 情況 執行 col 語義 沒有 遇到 可用 觸發器 SQL的約束種類: 一、非空約束 not null 二、唯一約束 unique 三、主鍵約束 四、外鍵約束 五、check約束 該約束可用於列之間檢查語義限制的,實際應用過程中非常常用!! 然鵝,M

MySQL優化——觸發器

strong ble define format def creat 存在 刪除 pda 轉載請註明出處:http://blog.csdn.net/l1028386804/article/details/46763665 觸發器是一個特殊的存儲過程,不同的是存儲過程要

mysql建立TRIGGER觸發器實現相同伺服器下不同庫的表資料同步

實現功能:mysql建立INSERT|UPDATE|DELETE觸發器實現相同伺服器下不同庫的表資料同步。比如table1表的資料有insert|update|delete操作,便同步到sync表中。然後再根據sync表中state(同步狀態)和oper(操作方式)欄位的狀態將sync表

Mysql 使用navcat 建立觸發器

1、建立觸發器 在想要建立觸發器的表 右鍵-> 設計表格 -> 觸發器 2、編寫觸發器內容 begin sql語句; end; 例:當修改密碼把之前得資料放到同步tb_user_copy 備份(mysql 不支援觸發器修改自己 以免出現遞迴操作)

mysql學習旅-使用-1.2.3-觸發器

1、觸發器簡介 觸發器就是在執行增刪改時自行執行的sql語句,是儲存在資料庫目錄中的 2、觸發器的優缺點 優點: 1、減少後臺頻繁訪問資料庫 2、安全性:可以基於資料庫的值是使用者具有操作資料庫的某種許可權,可以基於時間限制使用者操作

史上最簡單MySQL教程詳解(進階篇)儲存引擎介紹預設引擎設定

什麼是儲存引擎? 與其他資料庫例如Oracle 和SQL Server等資料庫中只有一種儲存引擎不同的是,MySQL有一個被稱為“Pluggable Storage Engine Architecture”(可替換儲存引擎架構)的特性,也就意味著My

MySQL檢視、觸發器、事務、儲存過程

http://www.cnblogs.com/linhaifeng/articles/7495918.html 檢視 ​ 試圖就是一個虛擬表(非真實存在),本質就是【根據sql語句獲取動態的資料集,併為其命名】,使用者使用時只需要使用名稱即可獲取資料集,可將該資料集當作表來使用。 ''' what: 檢

Oracle入門(十四.22)建立DDL和資料庫事件觸發器

一、什麼是DDL和資料庫事件觸發器?DDL語句觸發DDL觸發器:CREATE,ALTER或DROP。資料庫事件觸發器由資料庫中的非SQL事件觸發,例如:•使用者連線到資料庫或與資料庫斷開連線。•DBA啟動或關閉資料庫。•使用者會話中引發了特定的異常。(1)在DDL語句中建立觸

SqlServer2012例項觸發器建立

一、觸發器實驗注意:把studentmanager資料庫中的所有表用select  into命令複製一份,然後用複製後新表完成下面的實驗,同時,對每個觸發器都要進行驗證。SELECT * INTO department2 FROM departmentSELECT * INT

mysql觸發器觸發器的增刪改查

我們在建立觸發器後,可以在包含觸發器定義檔案的資料資料夾中顯示其定義。觸發器作為純文字檔案儲存在以下資料庫資料夾中:/data_folder/database_name/table_name.trg我們還可通過查詢information_schema資料庫中的triggers

SQL Server2012 學習(十六) :觸發器建立與使用

接上篇部落格的內容,觸發器可以看作是一個特殊的儲存過程。本篇部落格主要關注DML和DDL觸發器對應的使用方法。1.觸發器的定義觸發器的定義如下圖。它與儲存過程的區別在於觸發器是被動呼叫的 ,即在滿足特定事件的情況下被執行,而儲存過程是在使用操作語句時主動進行呼叫。觸發器大致分