我是靠谱客的博主 受伤山水,最近开发中收集的这篇文章主要介绍Navicat for MySQL触发器更新和插入操作,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一,触发器概念

触发器(trigger):监视某种情况,并触发某种操作,它是提供给程序员和数据分析员来保证数据完整性的一种方法,它是与表事件相关的特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是由事件来触发,例如当对一个表进行操作( insert,delete, update)时就会激活它执行。
触发器四要素:

  1. 监视地点(table)
  2. 监视事件(insert/update/delete)
  3. 触发时间(after/before)
  4. 触发事件(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触发器更新和插入操作所遇到的程序开发问题。

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

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

评论列表共有 0 条评论

立即
投稿
返回
顶部