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 theninsert into table1(id,name,image,bz) values (@id,@name,new.image,@A);elseupdate table1 set name =@name,image=new.image,bz=@A  where id = @id;end if;
END;

SQL创建触发器以及触发器的使用实例+详解相关推荐

  1. 【无标mysql触发器trigger实例详解

    文章来源: 学习通http://www.bdgxy.com/ 普学网http://www.boxinghulanban.cn/ 智学网http://www.jaxp.net/ 目录 什么是触发器 创建 ...

  2. python生成表格文件_python 读取excel文件生成sql文件实例详解

    python 读取excel文件生成sql文件实例详解 学了python这么久,总算是在工作中用到一次.这次是为了从excel文件中读取数据然后写入到数据库中.这个逻辑用java来写的话就太重了,所以 ...

  3. mysql 创建删除表_mysql创建删除表的实例详解

    表的创建命令需要: 表的名称 字段名称 定义每个字段(类型.长度等) 语法 下面是通用的SQL语法用来创建MySQL表: CREATE TABLE table_name (column_name ...

  4. Linux 创建网页服务,Linux使用Node.js建立访问静态网页的服务实例详解

    Linux使用Node.js建立访问静态网页的服务实例详解 一.安装node.js运行所需要的环境,: 二.创建node目录(/node/www),并在目录下创建node.js服务文件server.j ...

  5. arraylist扩容是创建新数组吗 java_Java ArrayList扩容问题实例详解

    本文研究的主要是Java ArrayList扩容问题实例详解的相关内容,具体介绍如下. 首先我们需要知道ArrayList里面的实质的其实是一个Object类型的数组,ArrayList的扩容问题其实 ...

  6. 怎么创建python django项目_创建Django项目图文实例详解

    本文实例讲述了创建Django项目的方法.分享给大家供大家参考,具体如下: 创建Django项目 创建一个HelloDjango项目 GitHub地址:https://github.com/liang ...

  7. android 创建帧动画,Android 逐帧动画创建实例详解

    Android 逐帧动画创建实例详解 前言: 我们看早期电影的时候,电影通常是一张一张播放,用我们现在专有名词来说,就是一帧帧来,安卓同样有这样动画效果的编排形式. 那么我们先定义逐帧动画xml文件 ...

  8. mysql模糊查询实例_Mysql实例sql模糊查询实例详解

    <Mysql实例sql模糊查询实例详解>要点: 本文介绍了Mysql实例sql模糊查询实例详解,希望对您有用.如果有疑问,可以联系我们. 导读:常用的模糊查询语句:select 字段 fr ...

  9. 《 Python List列表全实例详解系列(二)》__创建列表(5种方式)

    < Python List列表全实例详解系列(二)> __创建列表(5种方式) 上一篇:< Python List 列表全实例详解系列(一)>__系列总目录.列表概念 本章目录 ...

  10. python迭代器创建序列_Python 中迭代器与生成器实例详解

    Python 中迭代器与生成器实例详解 本文通过针对不同应用场景及其解决方案的方式,总结了Python中迭代器与生成器的一些相关知识,具体如下: 1.手动遍历迭代器 应用场景:想遍历一个可迭代对象中的 ...

最新文章

  1. hdu 1544(求回文子串的个数)
  2. LayUi前端框架删除数据缓存问题(解决删除后刷新页面内容又会显示问题)
  3. GitLab搭建详细过程
  4. hive 中窗口函数row_number,rank,dense_ran,ntile分析函数的用法
  5. 计算机一级试题论述,计算机一级考试理论题及答案要点
  6. 同一个电脑可安装多个python版本吗_Linux下如何安装多个Python版本
  7. 一段最短的代码,用上js所有关键字
  8. Android知识点汇总以及常见面试题
  9. Python实现Excel与XML之间的转换
  10. _IO, _IOR, _IOW, _IOWR 宏的用法与解析
  11. monkey配置及简单报告生成(安卓)
  12. 音创点歌机_音创点歌系统_音创KTV点歌系统下载- 下载之家
  13. 1 什么是机器学习(Machine Learning)?
  14. 用户体验与可用性测试
  15. rational rose导出sql脚本
  16. 多水下机器人协同定位
  17. js vue 获取 (昨天、今天、明天) 时间
  18. 营销邮件这样写 客户打开率会更高
  19. js中break关键字的用法。
  20. 实战:大数据营销 微信朋友圈广告

热门文章

  1. linux下oracle11g的安装-图文安装
  2. 人工合成生命的最新进展比AI还快
  3. LaTeX 符号命令大全
  4. 学硕论文选题计算机,研究生计算机论文题目大全 研究生计算机论文题目哪个好...
  5. n行杨辉三角 Python
  6. Python编写杨辉三角形
  7. Linux 虚拟IP
  8. Flash cs4 for mac 序列号。
  9. python贪吃蛇游戏无法运行_Python贪吃蛇游戏编写代码
  10. RDkit:介绍smiles编码,smart编码及摩根指纹(ECFP)