日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

MySQL数据库----触发器

發布時間:2025/3/15 数据库 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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数据库----触发器的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。