MySQL——觸發器

創建觸發器:

創建的原型:

--具體實現:創建觸發器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語句。

因此,我們不能像修改其他數據庫對象(如表、視圖、存儲過程)一樣修改觸發器。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章