MySQL数据库----触发器
生活随笔
收集整理的這篇文章主要介紹了
MySQL数据库----触发器
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
觸發器-trigger
觸發器:監視某種情況,并觸發某種操作。
使用觸發器可以定制用戶對表進行【增、刪、改】操作時前后的行為,注意:沒有查詢
-- 觸發器:某種程序觸發了工具的運行 -- 觸發器不能主動調用,只有觸發了某種行為才會調用觸發器的執行 -- 插入一條記錄就觸發一次 -- 還是建議不要用觸發器,因為這是BDA管理的,還是不如你在程序里面直接寫比較方便1.創建觸發器的語法
createtrigger trigger_nametrigger_time trigger_eventon tbl_name for each rowtriggrr_body #主體,就是在觸發器里干什么事 trigger_time:{before | after} trigger_event:{insert | update |detele}準備表
-- # 2.準備表 -- #第一步:準備表 create table cmd_log( id int primary key auto_increment, cmd_name char(64), #命令的名字 sub_time datetime, #提交時間 user_name char(32), #是哪個用戶過來執行這個命令 is_success enum('yes','no') #命令是否執行成功 );create table err_log( id int primary key auto_increment, cname char(64), #命令的名字 stime datetime #提交時間 );創建觸發器
-- #創建觸發器(向err_log表里插入最新的記錄) delimiter // createtrigger tri_after_inser_cmd_logafter inserton cmd_log for each row BEGINif new.is_success = 'no' theninsert into err_log(cname,stime) VALUES(new.cmd_name,new.sub_time);end if; #記得加分號,mysql一加分號代表結束,那么就得聲明一下 END // delimiter ; #還原的最原始的狀態-- #創建觸發器(向err_log表里插入最舊的記錄) delimiter // createtrigger tri_after_inser_cmd_log1after deleteon cmd_log for each row BEGINif old.is_success = 'no' theninsert into err_log(cname,stime) VALUES(old.cmd_name,old.sub_time);end if; #記得加分號,mysql一加分號代表結束,那么就得聲明一下 END // delimiter ; #還原的最原始的狀態 DELETE from cmd_log where id=1;?
-- 觸發器的兩個關鍵字:new ,old -- new :表示新的記錄 -- old:表示舊的那條記錄 -- 什么情況下才往里面插記錄 -- 當命令輸入錯誤的時候就把錯誤的記錄插入到err_log表中 1. 插入事件觸發器 INSERT INTO order_table(gid,much) VALUES(1,3);-- update goods set num = num -3 where id =1;CREATE TRIGGER tg1 AFTER INSERT on order_table for EACH row -- 固定寫法 BEGINupdate goods set num = num -new.much where id =new.gid; END-- 刪除觸發器 drop TRIGGER TG1;2.更新事件觸發器update order_table set much = much +2 where oid = 6;update goods set num = num+2 where id = 1;create TRIGGER tg2 AFTER UPDATE ON order_tablefor EACH ROWBEGINupdate goods set num = num+old.much - new.much where id = old.gid;END 3.刪除事件觸發器DELETE FROM order_table where oid =6;update goods set num = num + 3 where id = 1;create TRIGGER tg3 AFTER DELETE on order_tablefor EACH ROWBEGINupdate goods set num = num + old.much where id = old.gid;END 4.查看觸發器show tiggers;?
轉載于:https://www.cnblogs.com/TheLand/p/8486730.html
總結
以上是生活随笔為你收集整理的MySQL数据库----触发器的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 之前是围棋下不过机器人,这回连打字也不行
- 下一篇: 下拉复选框