我是靠谱客的博主 炙热秀发,这篇文章主要介绍数据库_触发器和事件,现在分享给大家,希望可以做个参考。

本文所使用的数据库样例请参见数据源表

1.触发器

触发器是程序员设定的在特定条件下将会执行的语句集合

1.1 创建触发器语法

delimiter 99
create trigger trigger_name 
after(before) trigger_event
on table_name 
for each row
begin
	##sentence body
end 99
delimiter ;

备注
trigger_name可以是insertupdatedelete

1.2 实例代码

	DELIMITER 99
	CREATE TRIGGER myTregger
	AFTER DELETE ON class
	FOR EACH ROW
	BEGIN
 		IF(old.`classNo`=1)THEN
  			DELETE FROM blur_class_student WHERE blur_class_student.`classNo`=1;
 		END IF; 
	END 99
	DELIMITER ;

备注
old 和 new 顾名思义表示表格中老的数据和新插入(删除、更新)的数据,具体列的名称可以通过 . 的方式,点出来

1.3 执行触发器

	DELETE FROM class WHERE class.`classNo`=1;
	SELECT* FROM blur_class_student;
	SELECT* FROM class;

发现删除class表中班号为1的成员,blur_class_student表中班号为1的成员也会消失

本部分内容部分参考自trigger

1.4 其它语句

删除触发器

drop trigger trigger_name;

更新触发器

更新出发器采用删除重建的方式

2.事件

事件是指某时间时间段内在数据库中插入一条记录(或者定时清楚数据库中无效的数据)

2.1 定义格式

使用前请在sql中执行以下语句

#表示打开全局事件
SET GLOBAL event_scheduler=1;
delimiter 99
create event event_name
on schedule `schedule`
on completion [not] preserve
enable(disable)
do
begin
	##sentence body
end 99
delimiter ;
2.1.1备注

备注1
schedule 可以是

  1. at+时间——用来完成单次的计划任务
  2. every+时间+(starts+时间+ends+时间)——用来完成重复的计划任务

获取当前时间-datetimetimestamp(详细说明请见文末)
时间的单位可以是 YEAR MONTH DAY HOUR MINUTE SECOND
备注2
on completion [not] presevre表示当计划执行完成后事件信息是否保留
备注3
enabledisable 表示执行(不执行)该事件,也可以在外面设置是否执行,语句为:

alter event event_name enable(disable);

2.2 实例

	SET GLOBAL event_scheduler=1;#已打开请忽略此句
	DELIMITER 99
	CREATE EVENT myEvent1
	ON SCHEDULE EVERY 2 DAY STARTS TIMESTAMP()+7 DAY  ENDS TIMESTAMP()+1 MONTH
	ON COMPLETION PRESERVE
	ENABLE
	DO 
	BEGIN
 		INSERT INTO `engine_test` VALUES(DAY(NOW()),'sdf','wqer');
	END 99
	DELIMITER ;

2.3 其它语句

删除事件

drop event event_name;

更新事件

更新事件采用删除重建的方式

事件部分整理自事件

最后

以上就是炙热秀发最近收集整理的关于数据库_触发器和事件的全部内容,更多相关数据库_触发器和事件内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(108)

评论列表共有 0 条评论

立即
投稿
返回
顶部