我是靠谱客的博主 外向砖头,最近开发中收集的这篇文章主要介绍SQL创建触发器以及触发器的使用实例+详解,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

MySQL的触发器使用实例:

解决   触发器被触发后,向表里插入数据时判断该条记录是否存在,如果存在则更新,不存在则插入 的问题

首先声明一下 mysql  中写的sql执行语句全部在  begin     end;  之间。写在begin end;外面的sql语句无法执行。

用简单的手动建表的办法,创建两个表。我用这两个表来介绍触发器该怎么使用。

操作表(触发器所在的表):  table                 执行表(相应触发器的表):   table1                 

删除触发器(delete) : 在 table 表中删除一条数据的时候,删除触发器(delete)被触发,它需要在 table1 表中插入主键,以及其它字段属性,    因为两个表的主键是一致的,所以 在 table1 中插入数据的时候,如果 已经有主键了,那么就会出现无法插入的动作,所以我们需要判断 table1 表中是否已经有该主键,如果有那么只进行字段的更新,如果没有再进行插入动作。 

SQL判断 语句在触发器中的实现:  定义的 id 是主键

BEGIN
  -- SQL语句 定义变量
  SET @id=OLD.id,@name=OLD.name,@image=OLD.image,@A=0;  --在触发器中定义接收变量,用@标识接收变量。  

   if (SELECT COUNT(*) AS nums FROM table1 WHERE id=old.id)=0  --判断table1中是否有table表传过来相同的主键。
   then
--如果table1中没有与传过来相同的主键,那么插入这条数据
    insert into table1(id,name,image,bz) values(@id,@name,MD5(@id+@name),@A);

  else
--如果table1中有相同的主键,那么更新这条数据。
    update table1 set name = @name,image=MD5(@id+@name),bz=@A  where id = old.id;
--结束判断
    end if;

END;

MD5(消息摘要算法): 在触发器中是一个负责加密的函数,就好像指纹锁一样,相同的两个数据 用MD5加密 的 hash值也是相同的。MD5可以为文件加密。

解释一下  @id=OLD.id ,这里@id 是用来接收 OLD.id 的值, 而OLD.id 表示的是 table 表中数据删除之前的id属性值。

与  OLD  对应的  是 NEW, 如果是  更新触发器 你会用到 NEW 属性, 比如执行更新动作, OLD.id表示的是数据还未更新前的id值,而 NEW.id  则表示的是 数据更新后的 id 值。

举一个  更新触发器(update)含NEW的例子:(逻辑跟上面的一致)  还是 定义 id 是主键

BEGIN
SET @A = 2;
  set @id=new.id,@name=new.name;
   if (SELECT COUNT(*) AS nums FROM table1 WHERE id=new.id)=0 then
   insert into table1(id,name,image,bz) values (@id,@name,new.image,@A);
  else
  update table1 set name =@name,image=new.image,bz=@A  where id = @id;
  end if;
END;

 

最后

以上就是外向砖头为你收集整理的SQL创建触发器以及触发器的使用实例+详解的全部内容,希望文章能够帮你解决SQL创建触发器以及触发器的使用实例+详解所遇到的程序开发问题。

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

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

评论列表共有 0 条评论

立即
投稿
返回
顶部