概述
一,触发器概念
触发器(trigger):监视某种情况,并触发某种操作,它是提供给程序员和数据分析员来保证数据完整性的一种方法,它是与表事件相关的特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是由事件来触发,例如当对一个表进行操作( insert,delete, update)时就会激活它执行。
触发器四要素:
- 监视地点(table)
- 监视事件(insert/update/delete)
- 触发时间(after/before)
- 触发事件(insert/update/delete)
其中:trigger_time是触发器的触发事件,可以为before(在检查约束前触发)或after(在检查约束后触发);trigger_event是触发器的触发事件,包括insert、update和delete
在navicat中编写触发器时需要
二,简单的insert触发器
Begin
if (new.director_position !="") then
insert into pjdj_village_director (per_id,village_id,position,create_time,creator)
values(new.id,new.village_id,new.director_position,new.create_time,new.creator);
end if;
end
首先有一个判断条件我这里是判断这张表的director_position 是否为null,如果为空的话,就向pjdj_village_director 表中插入per_id,village_id,position,create_time,creator,这些字段per_id,village_id,position,create_time,creator是pjdj_village_director 表中的字段,
new.id,new.village_id,new.director_position,new.create_time,new.creator这些字段是你在那张表中设置触发器的这张表的字段,new是必须要写的,这样当你想这张表中插入数据时,会自动同步到pjdj_village_director 表中.
三,简单的更新update操作
update这边有一个小小的坑,也不算坑吧,就是我太笨了,刚学习不会,所以搞了好久
废话不说直接上代码
Begin
UPDATE pjdj_village_family t
SET t.dy_mobile = ( SELECT p.telephone FROM pjdj_person p WHERE p.NAME = t.dy_name AND p.idcard = t.dy_idcard LIMIT 1 )
WHERE
t.dy_mobile IS NULL ;
end
我这里是需要在这张表中稍微做一点点的查询判断,就这一点点的查询让我这个小白头疼不已
SELECT p.telephone FROM pjdj_person p WHERE p.NAME = t.dy_name AND p.idcard = t.dy_idcard LIMIT 1
就是在这个查询的时候本来我在后面没有加 LIMIT 1,导致我每次都会报错 Subquery returns more than 1 row就这个错误耽误我一个小时,希望可以帮助你们.
就这样操作就可以在你插入数据时,他会自动更新到你想更新的那张表中
最后
以上就是受伤山水为你收集整理的Navicat for MySQL触发器更新和插入操作的全部内容,希望文章能够帮你解决Navicat for MySQL触发器更新和插入操作所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复