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

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

詳細解讀MySQL的觸發器trigger

瀏覽:70日期:2023-05-08 10:17:42

什么是觸發器

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

創建觸發器

觸發器是個特殊的存儲過程,不同的是,執行存儲過程要使用CALL語句來調用,而觸發器的執行不需要使用CALL語句調用,也不需要手工啟動,只要當一個預定義的事件發生的時候,就會被MySQL自動調用。比如對student表進行操作(INSERT、DELETE或UPDATE)時就會激活它執行。

觸發器可以查詢其他表,而且可以包含復雜的SQL語句。它們主要用于滿足復雜的業務規則或要求。可以創建只有一條語句的觸發器,不過一般都是有多個執行語句的觸發器用得比較多,即使單條語句的觸發器,也可以使用多條語句的觸發器的寫法來寫,看下有多個執行語句的觸發器的基本寫法:

CREATE TRIGGER trigger_name trigger_time trigger_eventON tbl_name FOR EACH ROW trigger_stmt

解釋一下:

1、trigger_name標識觸發器名稱,用戶自行指定

2、trigger_time標識觸發時機,可以指定為before或after

3、trigger_event標識觸發事件,包括INSERT、UPDATE和DELETE

4、tbl_name標識建立觸發器的表名,即在哪張表上建立觸發器

5、trigger_stmt是觸發器程序體,觸發器程序可以使用begin和end作為開始和結束,中間包含多條語句

觸發器程序可以使用begin和end作為開始和結束,中間包含多條語句。舉個例子,還是以前的學生表:

create table student(    studentId    int primary key    auto_increment    not null,    studentNamevarchar(10)   not null,    studentAgeint,    studentPhone    varchar(15))

給學生表的studentName、studentAge、studentPhone三個字段都創建一個觸發器表:

create table triggerstudentname(    t_studentName VARCHAR(10));create table triggerstudentAge(    t_studentAge int);create table triggerstudentPhone(    t_studentPhone VARCHAR(15));

創建一個觸發器,每次插入一條數據之后分別往三張表插字段:

CREATE TRIGGER trigger_student AFTER INSERT ON studentFOR EACH ROW BEGIN    INSERT INTO triggerstudentname values(NEW.studentName);    INSERT INTO triggerstudentAge values(NEW.studentAge);    INSERT INTO triggerstudentPhone values(NEW.studentPhone);END

插入三條數據:

insert into student values(null,"Jack", "11", "55555555");insert into student values(null,"Dicky", "14", "66666666");insert into student values(null,"Coco", "19", "77777777");commit;

看一下三張表的情況:

沒什么問題,執行結果顯示,在向student表插入數據的同時,triggerstudentname、triggerstudentAge和triggerstudentPhone三張表里面的數據都發生了變化,INSERT動作觸發了觸發器。

查看觸發器

查看觸發器是指查看數據庫中已存在的觸發器的定義、狀態和語法信息等。可以通過命令來查看已經創建的觸發器,有兩種方式可以查看觸發器,一一講解。

1、SHOW TRIGGERS語句查看觸發器

通過SHOW TRIGGERS查看觸發器的語句如下:

SHOW TRIGGERS;

用這個命令來查看一下觸發器:

有一部分沒截取完整,解釋一下主要部分的含義:

(1)Trigger表示觸發器的名稱,這里有兩個觸發器分別是tri_student和trigger_student

(2)Event表示激活觸發器的事件,這里的兩個觸發事件為插入操作INSERT

(3)Table表示激活觸發器的操作對象表,這里都為student表

(4)Statement表示激活觸發器之后執行的語句

(5)Timing表示觸發器觸發的時間,分別為插入操作之前(BEFORE)和插入操作之后(AFTER)

2、在triggers表中查看觸發器信息

SHOW TRIGGERS語句查看當前創建的所有觸發器信息,這在觸發器較少的情況下,使用該語句會很方便,如果要查看特定的觸發器信息,可以直接從infomation_schema數據庫中的triggers表中查找,通過SELECT命令查看,基本語法為:

SELECT * FROM INFORMATION_SCHEMA.TRIGGERS WHERE condition;

比如:

SELECT * FROM INFORMATION_SCHEMA.TRIGGERS WHERE TRIGGER_NAME = "trigger_student";

可以自己查看一下命令運行的效果

刪除觸發器

使用DROP TRIGGER語句可以刪除MySQL中已經定義的觸發器,刪除觸發器的基本語法為:

DROP TRIGGER [schema_name.]trigger_name;

schema_name表示數據庫名稱,是可選的,如果省略了schema_name,將從當前數據庫中刪除觸發器,trigger_name是要刪除的觸發器的名稱,比如:

DROP TRIGGER school.tri_student

觸發器tri_student刪除成功

使用觸發器的注意點

在使用觸發器的時候需要注意:對于相同的表,相同的事件只能創建一個觸發器

比如對表student創建了一個BEFORE INSERT觸發器,那么如果對表student再次創建一個BEFORE INSERT觸發器,MySQL將會報錯,此時,只可以在表student上創建AFTER INSERT或者BEFORE UPDATE類型的觸發器。靈活地運用觸發器將為操作省去很多麻煩。

到此這篇關于詳細解讀MySQL的觸發器trigger的文章就介紹到這了,更多相關MySQL觸發器trigger內容請搜索以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持!

標簽: MySQL
相關文章:
主站蜘蛛池模板: 威实软件_软件定制开发_OA_OA办公系统_OA系统_办公自动化软件 | 变压器配件,变压器吸湿器,武强县吉口变压器配件有限公司 | 山东限矩型液力偶合器_液力耦合器易熔塞厂家-淄博市汇川源机械厂 | 地脚螺栓_材质_标准-永年县德联地脚螺栓厂家 | 顺辉瓷砖-大国品牌-中国顺辉| 岸电电源-60HZ变频电源-大功率变频电源-济南诚雅电子科技有限公司 | 磁力抛光研磨机_超声波清洗机厂家_去毛刺设备-中锐达数控 | 盐城网络公司_盐城网站优化_盐城网站建设_盐城市启晨网络科技有限公司 | 篮球架_乒乓球台_足球门_校园_竞技体育器材_厂家_价格-沧州浩然体育器材有限公司 | 聚氨酯保温钢管_聚氨酯直埋保温管道_聚氨酯发泡保温管厂家-沧州万荣防腐保温管道有限公司 | 【黄页88网】-B2B电子商务平台,b2b平台免费发布信息网 | 湖南印刷厂|长沙印刷公司|画册印刷|挂历印刷|台历印刷|杂志印刷-乐成印刷 | 飞歌臭氧发生器厂家_水处理臭氧发生器_十大臭氧消毒机品牌 | 广州市哲铭油墨涂料有限公司,水性漆生产研发基地 | 高压负荷开关-苏州雷尔沃电器有限公司| R507制冷剂,R22/R152a制冷剂厂家-浙江瀚凯制冷科技有限公司 | 橡胶接头_橡胶软接头_套管伸缩器_管道伸缩器厂家-巩义市远大供水材料有限公司 | 伟秀电气有限公司-10kv高低压开关柜-高低压配电柜-中置柜-充气柜-欧式箱变-高压真空断路器厂家 | sus630/303cu不锈钢棒,440C/430F/17-4ph不锈钢研磨棒-江苏德镍金属科技有限公司 | 洗砂机械-球磨制砂机-洗沙制砂机械设备_青州冠诚重工机械有限公司 | 进口便携式天平,外校_十万分之一分析天平,奥豪斯工业台秤,V2000防水秤-重庆珂偌德科技有限公司(www.crdkj.com) | 上海心叶港澳台联考一对一培训_上海心叶港澳台联考,港澳台联考一对一升学指导 | 长江船运_国内海运_内贸船运_大件海运|运输_船舶运输价格_钢材船运_内河运输_风电甲板船_游艇运输_航运货代电话_上海交航船运 | 深圳天际源广告-形象堆头,企业文化墙,喷绘,门头招牌设计制作专家 | 柔性测斜仪_滑动测斜仪-广州杰芯科技有限公司 | 磁棒电感生产厂家-电感器厂家-电感定制-贴片功率电感供应商-棒形电感生产厂家-苏州谷景电子有限公司 | 超声波焊接机,振动摩擦焊接机,激光塑料焊接机,超声波焊接模具工装-德召尼克(常州)焊接科技有限公司 | 安全,主动,被动,柔性,山体滑坡,sns,钢丝绳,边坡,防护网,护栏网,围栏,栏杆,栅栏,厂家 - 护栏网防护网生产厂家 | 最新电影-好看的电视剧大全-朝夕电影网 | 上海律师事务所_上海刑事律师免费咨询平台-煊宏律师事务所 | 成都软件开发_OA|ERP|CRM|管理系统定制开发_成都码邻蜀科技 | 政府回应:200块在义乌小巷能买到爱情吗?——揭秘打工族省钱约会的生存智慧 | 背压阀|减压器|不锈钢减压器|减压阀|卫生级背压阀|单向阀|背压阀厂家-上海沃原自控阀门有限公司 本安接线盒-本安电路用接线盒-本安分线盒-矿用电话接线盒-JHH生产厂家-宁波龙亿电子科技有限公司 | B2B网站_B2B免费发布信息网站_B2B企业贸易平台 - 企资网 | 塑料脸盆批发,塑料盆生产厂家,临沂塑料广告盆,临沂家用塑料盆-临沂市永顺塑业 | 泥沙分离_泥沙分离设备_泥砂分离机_洛阳隆中重工机械有限公司 | 微动开关厂家-东莞市德沃电子科技有限公司 | 电动葫芦|环链电动葫芦-北京凌鹰名优起重葫芦 | 自动检重秤-动态称重机-重量分选秤-苏州金钻称重设备系统开发有限公司 | 翰墨AI智能写作助手官网_人工智能问答在线AI写作免费一键生成 | 精密模具加工制造 - 富东懿|