设计网站设计原则,杭州网站做的好公司名称,公司企业简介,wordpress伪静态教程什么是触发器MySQL的触发器(trigger)和存储过程一样#xff0c;都是嵌入到MySQL中的一段程序。触发器是由事件来触发某个操作#xff0c;这些事件包括INSERT、UPDATE和DELETE语句。如果定义了触发程序#xff0c;当数据库执行这些语句的时候就会激发触发器执行相应的操作都是嵌入到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或after3、trigger_event标识触发事件包括INSERT、UPDATE和DELETE4、tbl_name标识建立触发器的表名即在哪张表上建立触发器5、trigger_stmt是触发器程序体触发器程序可以使用begin和end作为开始和结束中间包含多条语句触发器程序可以使用begin和end作为开始和结束中间包含多条语句。举个例子还是以前的学生表create table student( studentId int primary key auto_increment not null, studentName varchar(10) not null, studentAge int, 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类型的触发器。灵活地运用触发器将为操作省去很多麻烦。