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 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创建触发器以及触发器的使用实例+详解相关推荐
- 【无标mysql触发器trigger实例详解
文章来源: 学习通http://www.bdgxy.com/ 普学网http://www.boxinghulanban.cn/ 智学网http://www.jaxp.net/ 目录 什么是触发器 创建 ...
- python生成表格文件_python 读取excel文件生成sql文件实例详解
python 读取excel文件生成sql文件实例详解 学了python这么久,总算是在工作中用到一次.这次是为了从excel文件中读取数据然后写入到数据库中.这个逻辑用java来写的话就太重了,所以 ...
- mysql 创建删除表_mysql创建删除表的实例详解
表的创建命令需要: 表的名称 字段名称 定义每个字段(类型.长度等) 语法 下面是通用的SQL语法用来创建MySQL表: CREATE TABLE table_name (column_name ...
- Linux 创建网页服务,Linux使用Node.js建立访问静态网页的服务实例详解
Linux使用Node.js建立访问静态网页的服务实例详解 一.安装node.js运行所需要的环境,: 二.创建node目录(/node/www),并在目录下创建node.js服务文件server.j ...
- arraylist扩容是创建新数组吗 java_Java ArrayList扩容问题实例详解
本文研究的主要是Java ArrayList扩容问题实例详解的相关内容,具体介绍如下. 首先我们需要知道ArrayList里面的实质的其实是一个Object类型的数组,ArrayList的扩容问题其实 ...
- 怎么创建python django项目_创建Django项目图文实例详解
本文实例讲述了创建Django项目的方法.分享给大家供大家参考,具体如下: 创建Django项目 创建一个HelloDjango项目 GitHub地址:https://github.com/liang ...
- android 创建帧动画,Android 逐帧动画创建实例详解
Android 逐帧动画创建实例详解 前言: 我们看早期电影的时候,电影通常是一张一张播放,用我们现在专有名词来说,就是一帧帧来,安卓同样有这样动画效果的编排形式. 那么我们先定义逐帧动画xml文件 ...
- mysql模糊查询实例_Mysql实例sql模糊查询实例详解
<Mysql实例sql模糊查询实例详解>要点: 本文介绍了Mysql实例sql模糊查询实例详解,希望对您有用.如果有疑问,可以联系我们. 导读:常用的模糊查询语句:select 字段 fr ...
- 《 Python List列表全实例详解系列(二)》__创建列表(5种方式)
< Python List列表全实例详解系列(二)> __创建列表(5种方式) 上一篇:< Python List 列表全实例详解系列(一)>__系列总目录.列表概念 本章目录 ...
- python迭代器创建序列_Python 中迭代器与生成器实例详解
Python 中迭代器与生成器实例详解 本文通过针对不同应用场景及其解决方案的方式,总结了Python中迭代器与生成器的一些相关知识,具体如下: 1.手动遍历迭代器 应用场景:想遍历一个可迭代对象中的 ...
最新文章
- hdu 1544(求回文子串的个数)
- LayUi前端框架删除数据缓存问题(解决删除后刷新页面内容又会显示问题)
- GitLab搭建详细过程
- hive 中窗口函数row_number,rank,dense_ran,ntile分析函数的用法
- 计算机一级试题论述,计算机一级考试理论题及答案要点
- 同一个电脑可安装多个python版本吗_Linux下如何安装多个Python版本
- 一段最短的代码,用上js所有关键字
- Android知识点汇总以及常见面试题
- Python实现Excel与XML之间的转换
- _IO, _IOR, _IOW, _IOWR 宏的用法与解析
- monkey配置及简单报告生成(安卓)
- 音创点歌机_音创点歌系统_音创KTV点歌系统下载- 下载之家
- 1 什么是机器学习(Machine Learning)?
- 用户体验与可用性测试
- rational rose导出sql脚本
- 多水下机器人协同定位
- js vue 获取 (昨天、今天、明天) 时间
- 营销邮件这样写 客户打开率会更高
- js中break关键字的用法。
- 实战:大数据营销 微信朋友圈广告