什么是mysql触发器

需要MySQL 5 对触发器的支持是在MySQL 5中增加的。因此,本章内容适用于MySQL 5或之后的版本。

MySQL语句在需要时被执行,存储过程也是如此。但是,如果你想要某条语句(或某些语句)在事件发生时自动执行,怎么办呢?例如:

1.每当增加一个顾客到某个数据库表时,都检查其电话号码格式是否正确,州的缩写是否为大写;

2.每当订购一个产品时,都从库存数量中减去订购的数量;

3.无论何时删除一行,都在某个存档表中保留一个副本。

所有这些例子的共同之处是它们都需要在某个表发生更改时自动处理。这确切地说就是触发器。触发器是MySQL响应以下任意语句而自动执行的一条MySQL语句(或位于 BEGIN 和 END 语句之间的一组语句):

1.DELETE ;

2.INSERT ;

3.UPDATE 。

其他MySQL语句不支持触发器。

创建mysql触发器

在创建触发器时,需要给出4条信息:

1.唯一的触发器名;

2.触发器关联的表;

3.触发器应该响应的活动( DELETE 、 INSERT 或 UPDATE );

4.触发器何时执行(处理之前或之后)。

保持每个数据库的触发器名唯一 在MySQL 5中,触发器名必须在每个表中唯一,但不是在每个数据库中唯一。这表示同一数据库中的两个表可具有相同名字的触发器。这在其他每个数据库触发器名必须唯一的DBMS中是不允许的,而且以后的MySQL版本很可能会使命名规则更为严格。因此,现在最好是在数据库范围内使用唯一的触发器名。

触发器用 CREATE TRIGGER 语句创建。下面是一个简单的例子:

输入:create trigger newproduct after insert on proucts for each row select 'product added';

分析:CREATE TRIGGER 用来创建名为 newproduct 的新触发器。触发器可在一个操作发生之前或之后执行,这里给出了 AFTER INSERT ,所以此触发器将在 INSERT 语句成功执行后执行。这个触发器还指定 FOR EACH ROW ,因此代码对每个插入行执行。在这个例子中,文本 Product added 将对每个插入的行显示一次。为了测试这个触发器,使用 INSERT 语句添加一行或多行到 products

中,你将看到对每个成功的插入,显示 Product added 消息。

仅支持表 只有表才支持触发器,视图不支持(临时表也不支持)。

触发器按每个表每个事件每次地定义,每个表每个事件每次只允许一个触发器。因此,每个表最多支持6个触发器(每条 INSERT 、 UPDATE和 DELETE 的之前和之后)。单一触发器不能与多个事件或多个表关联,所以,如果你需要一个对 INSERT 和 UPDATE 操作执行的触发器,则应该定义

两个触发器。

触发器失败 如果 BEFORE 触发器失败,则MySQL将不执行请求的操作。此外,如果 BEFORE 触发器或语句本身失败,MySQL将不执行 AFTER 触发器(如果有的话)。

删除mysql触发器

现在,删除触发器的语法应该很明显了。为了删除一个触发器,可使用 DROP TRIGGER 语句,如下所示:

输入:drop trigger newproduct ;

分析:触发器不能更新或覆盖。为了修改一个触发器,必须先删除它,然后再重新创建。

【相关推荐】

mysql创建删除触发器的时候_mysql触发器简介及如何创建和删除触发器相关推荐

  1. mysql创建外键级联更新_MySQL中利用外键实现级联删除、更新

    MySQL支持外键的存储引擎只有InnoDB,在创建外键的时候,要求父表必须有对应的索引,子表在创建外键的时候也会自动创建对应的索引.在创建索引的时候,可以指定在删除.更新父表时,对子表进行的相应操作 ...

  2. mysql百万数据建索引时间_mysql百万的数据快速创建索引

    测试数据本机一张表users有100百万条记录.在创建此表前没有未相应字段添加索引,所以此时需要为表添加索引.但是因为数据量大的原因,索引添加可能不成功,想了很多办法,终于挖坑成功. 开始准备工作, ...

  3. mysql case 2个返回值_MySQL函数简介 2

    6.5 条件判断函数 条件判断函数也被称为控制流程函数,根据满足的条件的不同,执行相应的流程,Mysql中进行条件判断的有IF,IFNULL,和CASE. 6.5.1 IF(expr,v1,v2)函数 ...

  4. mysql事务变量_mysql学习四之事务、变量、触发器、函数、存储过程

    需求:有一张银行账户表,有A用户给B用户转账:A账户先减少,B账户增加,但是A操作完之后断电了. 解决方案:A减少钱,但是不要立即修改数据表:B收到钱之后,同时修改数据表 事务安全 事务:transa ...

  5. mysql触发器应用场景_MySQL触发器的使用场景及方法实例

    触发器: 触发器的使用场景以及相应版本: 触发器可以使用的MySQL版本: 版本:MySQL5以上 使用场景例子: 每当增加一个顾客到某个数据库表时,都检查其电话号码格式是否正确,州的缩写是否为大写 ...

  6. mysql触发器访问网站_MySQL触发器使用-WEB资讯专栏-DMOZ中文网站分类目录-免费收录各类优秀网站的中文网站目录....

    触发器:触发器的使用场景以及相应版本:触发器可以使用的MySQL版本:- 版本:MySQL5以上### 使用场景例子:1. 每当增加一个顾客到某个数据库表时,都检查其每当增加一个顾客到某个数据库表时, ...

  7. mysql触发器实验小结_mysql 触发器小结

    触发器可以监视某种数据操作(insert/update/delete) 并触发(insert/update/delete)( 创建触发器4要素 监视地点 -----监视事件----触发时间----触发 ...

  8. mysql怎么删除表中字段的数据库表_Mysql 数据库 表 字段的创建 修改 删除

    MYSQL基础上机练习题(一) 数据库.表.字段的创建.修改.删除 一.实验目的: 创建.修改.删除数据库 创建.修改.删除表 创建.修改.删除字段 二.内容: 创建一个用于企业管理的员工管理数据库, ...

  9. mysql触发器如果提示_mysql 触发器

    1   引言Mysql的触发器和存储过程一样,都是嵌入到mysql的一段程序.触发器是mysql5新增的功能,目前线上凤巢系统.北斗系统以及哥伦布系统使用的数据库均是mysql5.0.45版本,很多程 ...

最新文章

  1. final和static
  2. 全国大学生智能车智能汽车竞赛车模检查规范
  3. Cloud Toolkit 部署应用到 EDAS Kubernetes 集群
  4. 客户成功已死,客户服务还活着
  5. GoldenGate 之 Bounded Recovery说明
  6. python中的多线程求值串行和并行_python多线程和多进程——python并行编程实验
  7. NUC1214 回文素数
  8. linux dhcp 绑定mac地址,●DHCP协议的功能是 (58) 。在Linux中提供DHCP服务的程序是 (59) ;DHCP服务将主机的MAC地址和IP地 - 赏学吧...
  9. bzoj 1930: [Shoi2003]pacman 吃豆豆 [费用流]
  10. Linux内核驱动目录功能说明
  11. python螺旋输出矩阵_Python实现打印螺旋矩阵功能的方法
  12. 信号的带宽、传输速率、采样率的关系
  13. Safari浏览器显示网页不全问题解决方法
  14. uvm设计分析——reg
  15. PyTorch中文教程 | (6) torch.nn是什么?
  16. 【python报错解决】findfont: Font family [‘Arial‘] not found. Falling back to DejaVu Sans.
  17. android sdk所有版本下载,android sdk全平台版本集成
  18. SunlightCoin简介——SunlightCoin 人人都是矿工
  19. 基于springboot框架开发的作业提交与批改系统
  20. android相机曝光度调节,手机摄影很难?这有份超全的安卓相机操作指南,专业模式一点就透...

热门文章

  1. Win7 命令行下C语言学习环境搭建(三)
  2. BMP图片魔法师KeyGen
  3. Mysql的“Table ‘mysql.servers‘ doesn‘t exist”的解决方法
  4. 解决CentOS6.5虚拟机克隆后无法上网(网卡信息不一致)的问题
  5. 微信小程序加密解密 C# 以及 填充无效,无法被移除错误的解决方案 Padding is invalid and cannot be removed
  6. 如何在Angular.js选择框中使用默认选项
  7. 如何使用YUM列出包的内容?
  8. 为什么静态方法在Java中不能是抽象的
  9. CentOS 7 快速部署 ELK
  10. MongoDB副本集