MySql 觸發器


⒈是什么?

  觸發器就是某個表發生一個事件(增刪改操作),然后自動的執行預先編譯好的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; 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM