觸發器、事務和鎖
阿新 • • 發佈:2017-12-21
分享 刪除 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 triggertg_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
當觸發器觸發前的任意一步發生錯誤時,都將不會繼續執行後續的操作。
觸發器、事務和鎖