本文所使用的数据库样例请参见数据源表
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 可以是
- at+时间——用来完成单次的计划任务
- 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;
更新事件
更新事件采用删除重建的方式
事件部分整理自事件
最后
以上就是炙热秀发最近收集整理的关于数据库_触发器和事件的全部内容,更多相关数据库_触发器和事件内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复