电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

詳解MySQL數據庫之觸發器

瀏覽:16日期:2023-10-10 18:26:55
1 引言

本文是對MySQL中觸發器的總結,從觸發器概念出發,結合實例對創建觸發器、使用觸發器、刪除觸發器進行介紹。

2 觸發器簡介

MySQL觸發器和存儲過程一樣,都是嵌入到MySQL的一段程序。觸發器是由事件來觸發某個操作,這些事件包括INSERT、UPDATE、DELETE。如果定義了觸發器,當數據庫執行這些語句的時候就會激活觸發器執行相應的操作,觸發程序是與表有關的命令數據庫對象,當表上出現特定事件,將激活該對象。

觸發器是一個特殊的存儲過程,不同的是,執行存儲過程要使用call語句來調用,而觸發器的執行不需要用call來調用,也不需要手工啟動,只要當一個預定義的事件發生,觸發器就會被MySQL自動調用。觸發器可以查詢其他表,而且可以包含復雜的SQL語句。

3創建觸發器

(1)創建只有一條執行語句的觸發器

語法結構如下:

CREATE TRIGGER trigger_name trigger_time trigger_event ON table_name FOR EACH ROW trigger_stmt

trigger_name:用戶自定義的觸發器名稱;

trigger_time:標識觸發事件,可以指定為before(時間發生前執行)或after(事件發生后執行);

trigger_event:標識觸發事件,包括INSERT、UPDATE、DELETE;

table_name:觸發器建立在哪個表上;

trigger_stmt:觸發器執行語句。

(2)創建有多個執行語句的觸發器

語法結構如下:

CREATE TRIGGER trigger_name trigger_time trigger_event ON table_name FOR EACH ROW BEGIN 語句執行列表 END

當觸發器有至少一條的執行語句時,多條執行語句需要用BEGIN和END包裹,分別表示整個代碼塊的開始和結束。

為演示觸發器操作,我們先創建一下三個數據表:

create table tb_student( id int PRIMARY key auto_increment, name varchar(10));create table tb_before_trigger( id int PRIMARY key auto_increment, num int , time_now datetime NULL DEFAULT CURRENT_TIMESTAMP);create table tb_after_trigger( id int PRIMARY key auto_increment, num int , time_now datetime NULL DEFAULT CURRENT_TIMESTAMP);

示例1:創建一個名為before_trigger的觸發器,該觸發器會在每次對表tb_student執行insert操作前觸發,觸發時會往before_trigger表插入一條包含tb_student表總記錄數的記錄。

delimiter //create trigger before_trigger before insert on tb_student for each row begin insert into tb_before_trigger (num) select count(*) from tb_student; end //delimiter ;

示例2:創建一個名為after_trigger的觸發器,該觸發器會在每次對表tb_student執行insert操作前觸發,觸發時會向before_trigger表插入一條包含tb_student表總記錄數的記錄。

delimiter //create trigger after_trigger after insert on tb_student for each row begin insert into tb_after_trigger (num) select count(*) from tb_student; end //delimiter ;

來測試一下示例1和示例2中創建的觸發器,往tb_student表中插入一條數據(插入前3個表沒有任何記錄):

insert into tb_student (name) values(’zhangsan’);

插入后,查看三個表中數據:

tb_student表:

詳解MySQL數據庫之觸發器

tb_before_trigger表:

詳解MySQL數據庫之觸發器

tb_after_trigger表:

詳解MySQL數據庫之觸發器

可以看到,在tb_student表執行insert操作后,另外兩個表也分別更新了記錄,tb_before_trigger表num值為0,證明在tb_student執行insert操作前插入的;tb_after_trigger表num值為1,證明在tb_student執行insert操作后插入的——這就是before與after的區別。

對于其他條件觸發器,使用方法與示例1和示例2類似,本文不在演示。

4 查看觸發器

(1)show triggers語句

通過show triggers語句可以查看示例1和示例2中創建的觸發器:

show triggers;

輸出結果:

詳解MySQL數據庫之觸發器

(2)在triggers表中查看觸發器

在information_schema數據庫的triggers表中存放在MySQL數據庫中的所有觸發器,可以通過查詢語句進行查看:

select * from information_schema.triggers where trigger_name = ’before_trigger’ ;

輸出結果:

詳解MySQL數據庫之觸發器

當不指定查詢條件時,即是指查看所有觸發器信息。

5 刪除觸發器

使用DROP TRIGGER語句可以刪除觸發器,基本語法結構如下:

DROP TRIGGER [schema_name] trigger_name

其中,schema_name表示數據庫名稱,是可選參數,如果省略則表示從當前數據庫中刪除觸發器。

示例3:刪除示例1中創建的觸發器before_trigger

drop trigger before_trigger;6 總結

在某些時候,觸發器可以起到錦上添花的作用,但是,觸發器的效率并不高,所以還是盡量少用。

作者:奧辰

Github:https://github.com/ChenHuabin321

以上就是詳解MySQL數據庫之觸發器的詳細內容,更多關于MySQL 觸發器的資料請關注好吧啦網其它相關文章!

標簽: MySQL 數據庫
相關文章:
主站蜘蛛池模板: EDLC超级法拉电容器_LIC锂离子超级电容_超级电容模组_软包单体电容电池_轴向薄膜电力电容器_深圳佳名兴电容有限公司_JMX专注中高端品牌电容生产厂家 | 丙烷/液氧/液氮气化器,丙烷/液氧/液氮汽化器-无锡舍勒能源科技有限公司 | 重庆LED显示屏_显示屏安装公司_重庆LED显示屏批发-彩光科技公司 重庆钣金加工厂家首页-专业定做监控电视墙_操作台 | 电机修理_二手电机专家-河北豫通机电设备有限公司(原石家庄冀华高压电机维修中心) | 安规_综合测试仪,电器安全性能综合测试仪,低压母线槽安规综合测试仪-青岛合众电子有限公司 | 灰板纸、灰底白、硬纸板等纸品生产商-金泊纸业 | 奥因-光触媒除甲醛公司-除甲醛加盟公司十大品牌 | 西安文都考研官网_西安考研辅导班_考研培训机构_西安在职考研培训 | 锤式粉碎机,医药粉碎机,锥式粉碎机-无锡市迪麦森机械制造有限公司 | 北京银联移动POS机办理_收银POS机_智能pos机_刷卡机_收银系统_个人POS机-谷骐科技【官网】 | 空调风机,低噪声离心式通风机,不锈钢防爆风机,前倾皮带传动风机,后倾空调风机-山东捷风风机有限公司 | 【ph计】|在线ph计|工业ph计|ph计厂家|ph计价格|酸度计生产厂家_武汉吉尔德科技有限公司 | 飞扬动力官网-广告公司管理软件,广告公司管理系统,喷绘写真条幅制作管理软件,广告公司ERP系统 | 净化车间装修_合肥厂房无尘室设计_合肥工厂洁净工程装修公司-安徽盛世和居装饰 | 精密模具制造,注塑加工,吹塑和吹瓶加工,EPS泡沫包装生产 - 济南兴田塑胶有限公司 | 胶原检测试剂盒,弹性蛋白检测试剂盒,类克ELISA试剂盒,阿达木单抗ELISA试剂盒-北京群晓科苑生物技术有限公司 | 薪动-人力资源公司-灵活用工薪资代发-费用结算-残保金优化-北京秒付科技有限公司 | 1000帧高速摄像机|工业高速相机厂家|科天健光电技术 | 紫外荧光硫分析仪-硫含量分析仪-红外光度测定仪-泰州美旭仪器 | 天然鹅卵石滤料厂家-锰砂滤料-石英砂滤料-巩义东枫净水 | 浙江宝泉阀门有限公司| 外贮压-柜式-悬挂式-七氟丙烷-灭火器-灭火系统-药剂-价格-厂家-IG541-混合气体-贮压-非贮压-超细干粉-自动-灭火装置-气体灭火设备-探火管灭火厂家-东莞汇建消防科技有限公司 | 防爆鼓风机-全风-宏丰鼓风机-上海梁瑾机电设备有限公司 | 帽子厂家_帽子工厂_帽子定做_义乌帽厂_帽厂_制帽厂_帽子厂_浙江高普制帽厂 | 飞行者联盟-飞机模拟机_无人机_低空经济_航空技术交流平台 | 雨水收集系统厂家-雨水收集利用-模块雨水收集池-徐州博智环保科技有限公司 | 400电话_400电话申请_888元包年_400电话办理服务中心_400VIP网 | 杭州月嫂技术培训服务公司-催乳师培训中心报名费用-产后康复师培训机构-杭州优贝姆健康管理有限公司 | 诺冠气动元件,诺冠电磁阀,海隆防爆阀,norgren气缸-山东锦隆自动化科技有限公司 | 周口市风机厂,周鼓风机,河南省周口市风机厂 | 青岛美佳乐清洁工程有限公司|青岛油烟管道清洗|酒店|企事业单位|学校工厂厨房|青岛油烟管道清洗 插针变压器-家用电器变压器-工业空调变压器-CD型电抗器-余姚市中驰电器有限公司 | [品牌官网]贵州遵义双宁口腔连锁_贵州遵义牙科医院哪家好_种植牙_牙齿矫正_原华美口腔 | 长沙网站建设制作「网站优化推广」-网页设计公司-速马科技官网 | 商用绞肉机-熟肉切片机-冻肉切丁机-猪肉开条机 - 广州市正盈机械设备有限公司 | 【德信自动化】点胶机_全自动点胶机_自动点胶机厂家_塑料热压机_自动螺丝机-深圳市德信自动化设备有限公司 | 实木家具_实木家具定制_全屋定制_美式家具_圣蒂斯堡官网 | 作文导航网_作文之家_满分作文_优秀作文_作文大全_作文素材_最新作文分享发布平台 | 【直乐】河北石家庄脊柱侧弯医院_治疗椎间盘突出哪家医院好_骨科脊柱外科专业医院_治疗抽动症/关节病骨伤权威医院|排行-直乐矫形中医医院 | 软瓷_柔性面砖_软瓷砖_柔性石材_MCM软瓷厂家_湖北博悦佳软瓷 | 爆破器材运输车|烟花爆竹运输车|1-9类危险品厢式运输车|湖北江南专用特种汽车有限公司 | 工装定制/做厂家/公司_工装订做/制价格/费用-北京圣达信工装 |