1. 程式人生 > >觸發器、事務和鎖

觸發器、事務和鎖

分享 刪除 llb blog exists 技術 eat values 繼續

觸發器是與表相關的數據對象,在滿足條件時觸發,可以協助應用在數據庫端保證數據的完整性

觸發器只能創建在永久表上,不能用於臨時表(create temporary table )

create trigger 觸發器名

觸發時間[before 檢查約束前觸發 | after檢查約束後觸發]

觸發事件 [insert | delete | update]

on 表名 for each row

delimiter @
drop trigger if exists tg_after_insert@
create trigger
tg_after_insert after insert on db.lib for each row begin insert into db.flag (text) values(after insert); end@ delimiter ;

查看所有的觸發器:

show triggers;

技術分享圖片

insert into db.lib values(1,1,aa) on duplicate key update book_name=aa;

當添加了duplicate key 後,執行insert into 操作插入一條相同主鍵的記錄時,會調用3個觸發器

技術分享圖片

如果插入的數據在已有數據中沒有相同數據時,只觸發兩個觸發器

技術分享圖片

註:在使用duplicate 操作時,註意觸發器的觸發情況

刪除觸發器:drop trigger 觸發器名

查看觸發器:show triggers;

desc triggers;

select * from information_schema.traggers;

註:不能在觸發器中顯式或隱式開始或結束事務:start transaction commit rollback

當觸發器觸發前的任意一步發生錯誤時,都將不會繼續執行後續的操作。

觸發器、事務和鎖