創建觸發器:
創建的原型:
--具體實現:創建觸發器trigger_pro1,對student表進行插入操作之前觸發,計數器@count加一
create trigger trigger_pro1
before
insert,load,replace
on student
for each row
begin
set @count = @count + 1;
end $
注意:一張表同一種觸發器只能存在一個;一張表最多有六種觸發器;
六種觸發器:
查詢觸發器:
(1)在創建觸發器後,可以在包含觸發器定義文件的數據文件夾中顯示其定義。觸發器作爲純文本文件存儲在以下數據庫文件夾中:
/data_folder/database_name/table_name.trg <終端命令,database_name:是數據庫名稱,table_name:是表名 >
show triggers [from/in database_name] [where/like 條件] ; <終端命令,查看當前數據庫中的所有觸發器,可以使用>
當執行show triggers語句時,MySQL返回以下內容:
Trigger:存儲觸發器的名稱,例如before_employee_update觸發器。
Event:指定事件,例如,調用觸發器的INSERT,UPDATE或DELETE。
Table:指定觸發器與例如相關聯的表,如employees表。
Statement:存儲調用觸發器時要執行的語句或複合語句。
Timing:接受兩個值:BEFORE和AFTER,它指定觸發器的激活時間。
Created:在創建觸發器時記錄創建的時間。
sql_mode:指定觸發器執行時的SQL模式。
Definer:記錄創建觸發器的帳戶。
要允許上述語句,我們至少得擁有super權限。
(2)通過語句查詢:<該語句允許您查看指定觸發器的內容及其元數據>
select *
from information_schema.triggers
where trigger_schema = 'database_name' --database_name是數據庫名稱
AND trigger_name = 'trigger_name'; --trigger_name表示觸發器名稱
(3)要檢索指定數據庫中的所有觸發器:<從information_schema
數據庫中的triggers
表查詢數據>
select *
from information_schema.triggers
where trigger_schema = 'database_name'; --database_name數據庫名稱
(4)要查找指定表相關聯的所有觸發器:
select *
from information_schema.triggers
where trigger_schema = 'database_name' --database_name數據庫名
AND event_object_table = 'table_name'; --table_name表名
刪除觸發器:
關鍵字:drop triggers
drop trigger table_name.trigger_name; --table_name表名trigger_name觸發器名稱
修改觸發器:
進行修改觸發器,必須首先刪除它並使用新的代碼重新創建。因爲在MySQL中沒有類似於alter triggers
語句。
因此,我們不能像修改其他數據庫對象(如表、視圖、存儲過程)一樣修改觸發器。