定义:**触发器(trigger)**是与表事件相关的特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是由事件来触发,比如当对一个表进行操作( insert,delete, update)时就会**它执行。触发器经常用于加强数据的完整性约束和业务规则等。 触发器可以从 DBA_TRIGGERS ,USER_TRIGGERS 数据字典中查到。
语法,使用触发程序,作用:
具体的可以参考mysql5.1中文文档,链接–传送门.
也可参考一个博客链接–传送门.
这两天做项目用到了触发器。具体问题是一个表a可能有好几个其他的表(表b,表c,表d…)进行关联,当在a表中需要添加新的内容时,在数据库中找到与它关联的(表b,表c,表d…),当表a的新增一套数据,关联的表b,表c,表d…各自也要新增一条对应的数据。想一想,后台代码可以实现------当通过前端对表a进行编辑(做新增操作,插入后找到与表a有关联的表,遍历关联表进行依次插入。(由于经常写,所以想换个简单的方式实现。)采用了mysql数据库自带的触发器功能。简单实用,几行数据库代码就轻易实现,就是在后期维护可能麻烦一点,但对于已定的基本功能的话,还是很推荐实用的。(同学说代码维护更容易点。。。)
下面进入操作阶段。
1.打开Navicat preminu (我的版本是12),可能界面会有所不同,但大体操作一样。
展开对应数据库的表,(图一)选中将要添加触发器的表,点击右键,选择设计表,可看到右边框显示对应表的设置(图二)
2.先选择触发器,给触发器起个名称。触发时机,为BEFORE 或者AFTER。再在后面操作进行选择。
3选择完后再下面框(4)进行定义。你要实现的功能代码谢在这里(由于项目数据库保密原因,就放别人写的了),我推荐看一下这篇博客–ysql 触发器应用之向另一个表新增数据(因为有定义,if判断语句,也很简洁,可以根据自己的实际需求改编使用) 链接–传送门.
4.最后点击保存。