⒈是什么?
觸發器就是某個表發生一個事件(增刪改操作),然后自動的執行預先編譯好的SQL語句,執行相關操作。觸發器事件跟觸發器中的SQL語句是原子性的(要么同時執行,要么同時不執行),這樣保證了數據的完整性。
⒉創建觸發器
1.語法
drop trigger if exists databaseName.tri_Name; create trigger tri_Name -- tri_Name代表觸發器名稱 tirgger_time trigger_event on tableName -- tirgger_time為觸發時機,可選值有after/before,trigger_event為觸發事件,可選值有insert/update/delete for each row -- 這句話在mysql是固定的,表示任何一條記錄上的操作滿足觸發事件都會觸發該觸發器。 begin sql語句; end
2示例
①insert類型觸發器
1 drop trigger if exists study.tgr_users_insert; 2 create trigger tgr_users_insert 3 before insert on users 4 for each row 5 begin 6 set new.username='fanqi'; -- NEW用來表示將要(before)或已經(after)插入的新數據。 7 end;
②delete類型觸發器
1 drop trigger if exists study.tgr_users_delete; 2 create trigger tgr_users_delete 3 before delete on users 4 for each row 5 begin 6 declare oldusername varchar(20) default 'fan'; 7 set oldusername = old.username; -- old用來表示將要或已經被刪除的原數據。 8 end;
③update類型觸發器
1 drop trigger if exists study.tgr_users_update; 2 create trigger tgr_users_update 3 before update on users 4 for each row 5 begin 6 declare oldusername varchar(20) default 'fan'; 7 set oldusername = old.username; -- old用來表示將要或已經被修改的原數據 8 set new.username= concat(oldusername,new.username); -- new用來表示將要或已經修改為的新數據 9 end;
⒊查看觸發器
1 show triggers from databaseName;
⒋刪除觸發器
1 drop trigger if exists databaseName.tri_Name;