1. 程式人生 > >MySQL系列教程二---觸發器

MySQL系列教程二---觸發器

1. 觸發器簡介

觸發器是一個特殊的儲存過程,執行儲存過程需要使用CALL語句來呼叫,但是觸發器的執行不需要用CALL語句呼叫,也不需要手工啟動,只要的當一個預定義的事件發生時,就會被MYSQL自動呼叫。比如當對fruits表進行INSERT,DELETE或UPDATE操作時就會啟用它。觸發器可以查詢資料表,而且可以包含複雜的SQL語句,主要用於複雜的業務規則或要求。

1.1建立只包含一個執行語句的觸發器

CREATE TRIGGER trigger_name trigger_time trigger_event ON tbl_name FOR RACH ROW trigger_stmt

trigger_name:觸發器名稱,使用者自行指定;
trigger_time:觸發時機,取值為 BEFORE 或 AFTER;
trigger_event:觸發事件,取值為 INSERT、UPDATE 或 DELETE;
tbl_name:建立觸發器的表名,即在哪張表上建立觸發器;
trigger_stmt:觸發器程式體,可以是一句SQL語句,或者用 BEGIN 和 END 包含的多條語句。

由此可見,可以建立6種觸發器,即:BEFORE INSERT、BEFORE UPDATE、BEFORE DELETE、AFTER INSERT、AFTER UPDATE、AFTER DELETE。

另外有一個限制是不能同時在一個表上建立2個相同型別的觸發器,因此在一個表上最多建立6個觸發器。

2.檢視觸發器

檢視觸發器是指檢視資料庫中存在的觸發器的定義、狀態和語法資訊等。本節介紹兩種檢視觸發器的方法,分別為show triggers語句檢視和在triggers表中檢視觸發器資訊。

2.1用show triggers語句檢視

語句如下:

SHOW TRIGGERS;

直接使用該條語句檢視的資訊可能有些混亂,可以在該條語句之後加上”\G”顯示資訊會比較有條理;

2.2在triggers表中檢視觸發器資訊

在MySQL中,所有的觸發器的定義都存在於INFORMATION_SCHEMA資料庫的triggers表中,可以通過查詢命令SELECT來檢視,具體語法如下:

SELECT * FROM INFORMATION_SCHEMA.TRIGGERS WHERE condition;

3.刪除觸發器

使用DROP TRIGGERS語句可以刪除觸發器,基本語法如下:

DROP TRIGGERS [schema_name.]trigger_name

其中,schema_name是資料庫的名稱,是可選的。如果省略了schema,將從當前資料庫中捨棄觸發程式。trigger_name是要刪除的觸發器的名稱。