九、MySql数据库-- 触发器(十一)

一、 触发器

	
	+++ 什么是触发器
	
				触发器(TRIGGER)是由 INSERT、UPDATE 和 DELETE 等事件来触发某种特定操作。满足
			触发器的触发条件时,数据库系统就会执行触发器中定义的程序语句。这样可以保证某些操作
			之间的一致性。
	
	+++  触发器作用
				
				当操作了某张表时,希望同时触发一些动作/行为,可以使用触发器完成!!

二、 创建触发器

2.1 创建只有一个执行语句的触发器


		+++ 基本形式如下:

				CREATE  TRIGGER  触发器名  BEFORE | AFTER  触发事件 ON   表名  FOR  EACH ROW
				执行语句

				eg:
						    CREATE TRIGGER dept_trig1 BEFORE INSERT ON department FOR EACH ROW
						    INSERT INTO triger_time VALUES(NOW());

							--说明:当向department 表中执行INSERT 操作时,数据库系统都会在 INSERT 语句执行之前向 triger_time 表中插入当前时间。


例子:

例如: 当向员工表插入一条记录时,希望同时往日志表插入数据

	
	需求: 当向员工表插入一条记录时,希望mysql自动同时往日志表插入数据
		  
		  +++ 创建添加触发器
					CREATE TRIGGER add_log AFTER INSERT ON student FOR EACH ROW 
					INSERT INTO LOG(content) VALUES('插入了一条数据');
					
				
		 
		  +++ 创建修改触发器
					CREATE TRIGGER upt_log AFTER update ON student FOR EACH ROW 
					INSERT INTO LOG(content) VALUES('修改了一条数据');


		  +++ 创建删除触发器	
					CREATE TRIGGER del_log AFTER DELETE ON student FOR EACH ROW 
					INSERT INTO LOG(content) VALUES('删除了一条数据');
						
			
			-- 往sutdent表插入数据后,log表中会新增一条记录:插入了一条数据
		     		insert into student(name)  values('小白');
			
			 -- 往student 表修改数据时,log表中会自动新增一条记录:修改了一条数据
					UPDATE student SET id =2 WHERE id =2;	     

		 	-- 删除student表数据时,log表中会新增一条记录:删除了一条记录
					 DELETE FROM student WHERE id=7;

2.2 创建有多个执行语句的触发器

		
		+++ 基本形式如下:

				CREATE  TRIGGER  触发器名  BEFORE | AFTER  触发事件  ON  表名  FOR  EACH  ROW
				BEGIN
						执行语句列表
				END

		
		其中,BEGINEND 中间的 执行语句列表 参数表示需要执行的多个执行语句的内容。
		不同的执行语句之间用分号隔开。
		
		eg:
				一般情况下MySQL默认是以";"(分号)作为结束执行语句。在创建触发器过程中需要用到分
				号,为了解决这个问题,可以用DELIMITER 语句。如下:


				mysql> DELIMITER &&
				mysql> CREATE TRIGGER dept_trig2 AFTER DELETE
				    -> ON department FOR EACH ROW
				    -> BEGIN		
				    -> INSERT INTO trigger_time VALUES('21:01:01');                                            		
				    -> INSERT INTO trigger_time VALUES('22:01:01');                                            		
				    -> END		
				    -> &&

 

三、查看触发器



		查看触发器是指查看数据库中已存在的触发器的定义、状态和语法等信息。查看触发器
	的方法包括 SHOW TRIGGERS 语句和查询 information_schma 数据库下的 triggers 表等。

	mysql> SHOW TRIGGERS \G 查询所有触发器的信息,不能查询指定的触发器

	mysql> SELECT * FROM information_schema.triggers \G 查询tiggers中的信息,会显示所有触发器的详细信息

	mysql> SELECT * FROM information_schema.triggers WHERE TRIGGER_NAME='dept_trig1' \G 只查询dept_trig1触发器的详细信息。


四、删除触发器

	删除触发器指删除数据库中已经存在的触发器。
	基本形式如下:
				DROP  TRIGGER  触发器名 | 数据库名.触发器名;

例子:

		mysql> DROP TRIGGER test2.dept_trig1; --指定删除数据库test2下的触发器dept_trig1,
											  --如果不指定数据库test2,则删除当前数据库下的触发器dept_trig1。

发布了94 篇原创文章 · 获赞 0 · 访问量 635

猜你喜欢

转载自blog.csdn.net/weixin_45602227/article/details/104162569