我是靠谱客的博主 阔达小熊猫,最近开发中收集的这篇文章主要介绍【mysql基础知识】数据库中新建触发器,监控数据变化,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

通过java实时查询数据库好像会影响查询效率,搜索网上资料,说最好使用数据库自己的触发器,用于监控数据库表的变化。

缺点是:触发器在数据库后台执行,维护困难,很有可能被忽略

搜了半天资料,整理如下。

----------------------------------------------------------------------------------------------------------------------------

一、新建触发器(两种方法)

1、命令行创建

(1)命令格式

本部分转载自:https://www.cnblogs.com/CraryPrimitiveMan/p/4206942.html

版本一:

DROP TRIGGER IF EXISTS trigger_name;
CREATE TRIGGER trigger_name
trigger_time
trigger_event ON tbl_name
FOR EACH ROW
trigger_stmt

其中:

trigger_name:标识触发器名称,用户自行指定;
trigger_time:标识触发时机,取值为 BEFORE 或 AFTER;
trigger_event:标识触发事件,取值为 INSERT、UPDATE 或 DELETE;
tbl_name:标识建立触发器的表名,即在哪张表上建立触发器;
trigger_stmt:触发器程序体,可以是一句SQL语句,或者用 BEGIN 和 END 包含的多条语句。

由此可见,可以建立6种触发器,即:BEFORE INSERT、BEFORE UPDATE、BEFORE DELETE、AFTER INSERT、AFTER UPDATE、AFTER DELETE。

另外有一个限制是不能同时在一个表上建立2个相同类型的触发器,因此在一个表上最多建立6个触发器。

版本二:

create trigger triggerName
after/before insert/update/delete on 表名
for each row   #这句话在mysql是固定的
begin
    sql语句;
end;

............详细内容,见转载原文..............

(2)示例代码(监控某一表格,当某一字段发生变化时,将最新字段添加至另一表中)

DELIMITER $        #指定数据库已$作为语句结束符,而不再默认结束符为;
create TRIGGER request_for_match
AFTER UPDATE on realtime_fueltrs
for EACH ROW
BEGIN
IF new.trsStatus<>old.trsStatus AND new.trsStatus=6 THEN
	UPDATE realtime_match_plate SET nozzleID=new.nozzleID;
END IF;
END; 
DELIMITER;           #还原结束符为; 不然其他语句会出错。

2、navicat 通过界面创建

转载地址:https://jingyan.baidu.com/article/36d6ed1f76ec9e1bcf4883aa.html

二、查看已建触发器

1、命令行查看

SHOW TRIGGERS

2、navicat 通过界面查看

    无

三、删除触发器

drop trigger trigger_name

-------------------------------------------------------------------------------------------------------------

最终,我用了java的线程池,定时查询数据库的结果。

 

 

最后

以上就是阔达小熊猫为你收集整理的【mysql基础知识】数据库中新建触发器,监控数据变化的全部内容,希望文章能够帮你解决【mysql基础知识】数据库中新建触发器,监控数据变化所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部