本文實例講述了mysql觸發(fā)器之觸發(fā)器的增刪改查操作。分享給大家供大家參考,具體如下:
我們在創(chuàng)建觸發(fā)器后,可以在包含觸發(fā)器定義文件的數(shù)據(jù)文件夾中顯示其定義。觸發(fā)器作為純文本文件存儲在以下數(shù)據(jù)庫文件夾中:
/data_folder/database_name/table_name.trg
我們還可通過查詢information_schema數(shù)據(jù)庫中的triggers表來顯示觸發(fā)器,如下所示:
SELECT
*
FROM
information_schema.triggers
WHERE
trigger_schema = 'database_name'
AND trigger_name = 'trigger_name';
該語句允許您查看觸發(fā)器的內(nèi)容及其元數(shù)據(jù),例如:關(guān)聯(lián)表名和定義器,這是創(chuàng)建觸發(fā)器的mysql用戶的名稱。
如果要檢索指定數(shù)據(jù)庫中的所有觸發(fā)器,則需要使用以下SELECT語句從information_schema數(shù)據(jù)庫中的triggers表查詢數(shù)據(jù):
SELECT
*
FROM
information_schema.triggers
WHERE
trigger_schema = 'database_name';
要查找與特定表相關(guān)聯(lián)的所有觸發(fā)器:
SELECT
*
FROM
information_schema.triggers
WHERE
trigger_schema = 'database_name'
AND event_object_table = 'table_name';
我們來看下employees表相關(guān)聯(lián)的所有觸發(fā)器:
SELECT * FROM information_schema.triggers
WHERE trigger_schema = '你的數(shù)據(jù)庫名稱'
AND event_object_table = 'employees';
其實在特定數(shù)據(jù)庫中顯示觸發(fā)器的另一種方法是使用SHOW TRIGGERS語句,語法如下所示:
SHOW TRIGGERS [FROM|IN] database_name
[LIKE expr | WHERE expr];
例如,如果要查看當前數(shù)據(jù)庫中的所有觸發(fā)器,可以使用SHOW TRIGGERS語句,如下所示:
要獲取特定數(shù)據(jù)庫中的所有觸發(fā)器,請在SHOW TRIGGERS語句中指定數(shù)據(jù)庫名稱,比如要查詢數(shù)據(jù)庫:luyaran下的所有觸發(fā)器,如下所示:
SHOW TRIGGERS FROM luyaran;
要獲取與特定表相關(guān)聯(lián)的所有觸發(fā)器,可以使用SHOW TRIGGERS語句中的WHERE子句。 以下語句返回與employees表相關(guān)聯(lián)的所有觸發(fā)器:
SHOW TRIGGERS FROM luyaran
WHERE `table` = 'employees';
這里要注意下,當我們使用反引號包裝table列,因為table是MySQL中的保留關(guān)鍵字。然后,當執(zhí)行SHOW TRIGGERS語句時,MySQL返回以下列:
- Trigger:存儲觸發(fā)器的名稱,例如before_employee_update觸發(fā)器。
- Event:指定事件,例如,調(diào)用觸發(fā)器的INSERT,UPDATE或DELETE。
- Table:指定觸發(fā)器與例如相關(guān)聯(lián)的表,如employees表。
- Statement:存儲調(diào)用觸發(fā)器時要執(zhí)行的語句或復合語句。
- Timing:接受兩個值:BEFORE和AFTER,它指定觸發(fā)器的激活時間。
- Created:在創(chuàng)建觸發(fā)器時記錄創(chuàng)建的時間。
- sql_mode:指定觸發(fā)器執(zhí)行時的SQL模式。
- Definer:記錄創(chuàng)建觸發(fā)器的帳戶。
在這里我們得注意下,要允許上述語句,我們至少得擁有SUPER權(quán)限。
完事我們來嘗試使用DROP TRIGGER語句來刪除現(xiàn)有的觸發(fā)器:
DROP TRIGGER table_name.trigger_name;
如果要刪除與employees表相關(guān)聯(lián)的before_employees_update觸發(fā)器,則可以執(zhí)行以下語句:
DROP TRIGGER employees.before_employees_update;
我們?nèi)绻薷挠|發(fā)器,必須首先刪除它并使用新的代碼重新創(chuàng)建。因為在MySQL中沒有類似:ALTER TRIGGER語句,因此,我們不能像修改其他數(shù)據(jù)庫對象,如表,視圖和存儲過程那樣修改觸發(fā)器。
好啦,本次記錄就到這里了。
更多關(guān)于MySQL相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《MySQL查詢技巧大全》、《MySQL事務操作技巧匯總》、《MySQL存儲過程技巧大全》、《MySQL數(shù)據(jù)庫鎖相關(guān)技巧匯總》及《MySQL常用函數(shù)大匯總》
希望本文所述對大家MySQL數(shù)據(jù)庫計有所幫助。
您可能感興趣的文章:- mysql觸發(fā)器trigger實例詳解
- mysql觸發(fā)器(Trigger)簡明總結(jié)和使用實例
- 一篇文章帶你深入了解Mysql觸發(fā)器
- MySQL觸發(fā)器的使用
- mysql日志觸發(fā)器實現(xiàn)代碼
- MySQL觸發(fā)器trigger的使用