MYSQL觸發器的介紹、創建、查看、刪除

公衆號關注:挨踢小子

1、介紹
表述:顧名思義在條件符合某種情況時,被觸發執行的相關操作。

時間:事件發生前before和發生後after

事件:

名稱 介紹
update 可用**old**訪問舊數據,**new**訪問新數據
delete 可用**old**訪問舊數據
insert 可用**new**訪問新數據 


 

其中new和old相當於一個對象,封裝了當前操作數據的所有字段

2、創建

-- 公衆號:挨踢小子

delimiter //  重定義行結束符
    create trigger trigger_name trigger_time trigger_event on table_name for each row
    begin
    -- 需要執行的sql操作語句
    end//
delimiter ;
-- delimiter          用於修改默認的行結束符,由於在觸發器中有多條sql語句,他們需要使用分號來結束,但是觸發器是一個整體,所以需要先更換默認的行結束符
-- trigger_name     自定義觸發器名
-- trigger_time        時間點 before|after
-- trigger_event     事件 delete|update|insert
-- table_name         表名


案例: 

-- 公衆號:挨踢小子

delimiter //  
create trigger t_name after update on sys_role for each row
begin 

 INSERT INTO `sys_role` (`role_id`, `role_name`, `role_key`, `role_sort`, `data_scope`, `status`, `del_flag`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES ('4', '測試角色', 'test', '4', '1', '0', '0', 'admin', '2019-05-14 10:57:34', 'bigadmin', '2019-06-13 15:04:48', '');

end    //
delimiter ;

3、位置
在mysql中所有觸發器的定義都存在**INFORMATION_SCHEMA** 數據庫的**TRIGGERS**表格中,可以通過**SELECT**來查看。 

-- 公衆號:挨踢小子

Select * FROM  INFORMATION_SCHEMA.TRIGGERS ;

TRIGGERS表

表字段 解釋
TRIGGER_SCHEMA 表示觸發器所在的數據庫
TRIGGER_NAME 後面是觸發器的名稱
EVENT_OBJECT_TABLE 表示在哪個數據表上觸發
ACTION_STATEMENT 表示觸發器觸發的時候執行的具體操作
ACTION_ORIENTATION ROW ,表示在每條記錄上都觸發
ACTION_TIMING 表示觸發的時刻是AFTER,剩下的是和系統相關的信息

 4、查看

-- 公衆號:挨踢小子

show triggers;  # 查看所有觸發器
show create trigger 觸發器名;  # 查看創建指定的觸發器語句

5、刪除

-- 公衆號:挨踢小子

drop trigger 觸發器名;  


6、注意

1、  在使用觸發器的時候需要注意,對於相同的表,相同的事件只能創建一個觸發器。

2、  及時刪除不再需要的觸發器。否則會導致繼續觸發,從而影響數據的完整性。

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