觸發器是一個特殊的存儲過程,執行存儲過程需要使用CALL語句來調用,但是觸發器的執行不需要用CALL語句調用,也不需要手工啟動,只要的當一個預定義的事件發生時,就會被MySQL自動調用。比如當對fruits表進行INSERT,DELETE或UPDATE操作時就會激活它。觸發器可以查詢數據表,而且可以包含復雜的SQL語句,主要用于復雜的業務規則或要求。
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個觸發器。
查看觸發器是指查看數據庫中存在的觸發器的定義、狀態和語法信息等。本節介紹兩種查看觸發器的方法,分別為show triggers語句查看和在triggers表中查看觸發器信息。
語句如下:
SHOW TRIGGERS;直接使用該條語句查看的信息可能有些混亂,可以在該條語句之后加上”/G”顯示信息會比較有條理;
在MySQL中,所有的觸發器的定義都存在于INFORMATION_SCHEMA數據庫的triggers表中,可以通過查詢命令SELECT來查看,具體語法如下:
SELECT * FROM INFORMATION_SCHEMA.TRIGGERS WHERE condition;使用DROP TRIGGERS語句可以刪除觸發器,基本語法如下:
DROP TRIGGERS [schema_name.]trigger_name其中,schema_name是數據庫的名稱,是可選的。如果省略了schema,將從當前數據庫中舍棄觸發程序。trigger_name是要刪除的觸發器的名稱。
新聞熱點
疑難解答