MySQL 触发器的基础操作(六)

 更新时间:2016年08月30日 10:25:37   作者:ZJDWHD  
这篇文章主要为大家详细介绍了MySQL 触发器的基础操作,告诉大家什么是MySQL触发器,如何查看触发器,感兴趣的小伙伴们可以参考一下

1.为什么使用触发器: 

    在MySQL数据库中,数据库对象表是存储和操作数据的逻辑结构,而数据库对象触发器则用来实现由一些表事件触发的某个操作。在数据库系统中,当执行表事件时,则会激活触发器,从而执行器包含的操作。触发器的操作包含创建、查看、删除。 

    触发器是数据库对象之一,该对象与编程语言 中的函数非常类似,都需要声明、执行等。但是触发器的执行不是由程序调用,也不是由手工启动,而是由事件来触发、激活从而实现执行。例如:在学生表中有学生名字、学生总数字段,每当添加一条学生记录时,学生的总数就必须同时改变。对于这个实例可以创建一个触发器,每次添加一条学生记录时,就执行一次计算学生总数的操作,这样就可保证每次添加一条学生记录后,学生总数和学生记录数一致。MySQL中在触发如下DELETE、INSERT、UPDATE语句时,就会自动执行所设置的操作,其他SQL语句则不会激活触发器。之所以会经常使用触发器,是因为该对象能够加强数据库表中数据的完整性约束和业务规则等。

2.创建触发器: 
    按照激活触发器时所执行的语句条目,可以将触发器分为“一个执行语句的触发器”和“多个执行语句的触发器” 

2.1 创建有一条执行语句的触发器:

语法形式为:

create trigger trigger_name 
  before | after trigger_event
    on table_name for each row trigger_stmt

//trigger_name 参数表示索要创建的触发器的名字,触发器的名字不能重复。建议触发器的命名为trigger_xxx或者tri_xxx;
before和after参数指定了触发器执行的时间,before:指在触发器事件之前执行触发器语句,after:指在触发器事件之后执行触发器语句;
trigger_event表示触发事件,即触发器执行条件,包delete、insert、update语句;table_name触发事件操作表的名字;
for each row表示任何一条记录上的操作满足触发事件都会触发该触发器;trigger_stmt表示激活触发器后被执行的语句。

示例:

create trigger tri_diaryteim 
  before insert on t_dept for each row
    insert into t_diary values(null,'t_dept',now());
//功能说明:向部门表插入一条记录之前向表t_diary插入当前时间记录。

2.2 创建包含多条执行语句的触发器:

语法形式如下:

create trigger trigger_name
  before|after trigger_event
    on table_name for each row
      begin
      trigger_stmt
      end

//比“只有一条执行语句的触发器”语法多了两个关键字begin和end,在这两个关键字之间是所要执行的多个执行语句的内容,执行语句之间用分号隔开。
在mysql中,一般情况下“;”符号作为语句的结束符号,可是在创建触发器时,需要用到“;”符号作为执行语句的结束符号。
为了解决该问题,可以使用关键字DELIMITER语句,例如:"DELIMITER$$",可以用来将结束符号设置为“$$”.

示例:

DELIMITER $$
create trigger tri_diarytime2
 after insert 
 on t_dept for each row
  begin 
  insert into t_diary values(null,'t_dept',now());
  insert into t_diary values(null,'t_dept',now());
  end
  $$
    DELIMITER;

3.查看触发器: 

3.1 通过SHOW TRIGGERS语句查看触发器:

语法为:
show triggers \G

3.2 通过查看系统表triggers实现查看触发器:

操作语句为;

use information_schema;
select * from triggers \G
select * from triggers where trigger_name='tri_diarytime2' \G //查看指定触发器

3.删除触发器:

语法为:
drop trigger trigger_name;

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • SQL窗口函数OVER用法实例整理

    SQL窗口函数OVER用法实例整理

    做SQL题时碰到了over()函数不太理解,所以整理了下,下面这篇文章主要给大家介绍了关于SQL窗口函数OVER用法的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-08-08
  • 快速解决mysql导出scv文件乱码、蹿行的问题

    快速解决mysql导出scv文件乱码、蹿行的问题

    这篇文章主要介绍了快速解决mysql导出scv文件乱码、蹿行的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-07-07
  • 详解Mysql和Oracle之间的误区

    详解Mysql和Oracle之间的误区

    mysql 和Oracle 在开发中的使用是随处可见的,那就简单去了解一下这俩款火的不行的数据库。
    2021-05-05
  • Mysql计算n日留存率的实现

    Mysql计算n日留存率的实现

    本文主要介绍了Mysql计算n日留存率的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-01-01
  • MySQL 日期时间格式化函数 DATE_FORMAT() 的使用示例详解

    MySQL 日期时间格式化函数 DATE_FORMAT() 的使用示例详解

    `DATE_FORMAT()`是MySQL中用于格式化日期时间的函数,本文详细介绍了其语法、格式化字符串的含义以及常见日期时间格式组合,感兴趣的朋友一起看看吧
    2025-03-03
  • mysql中Update未加索引导致的微服务模块不可用

    mysql中Update未加索引导致的微服务模块不可用

    本文主要介绍了mysql中Update未加索引导致的微服务模块不可用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-06-06
  • Mysql如何使用命令实现分级查找帮助详解

    Mysql如何使用命令实现分级查找帮助详解

    这篇文章主要给大家介绍了关于Mysql如何使用命令实现分级查找帮助的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用mysql具有一定的参考学习价值,需要的朋友们下面跟着小编来一起学习学习吧。
    2017-08-08
  • mysql 5.7.17 winx64安装配置教程

    mysql 5.7.17 winx64安装配置教程

    这篇文章主要为大家详细介绍了mysql 5.7.17 winx64安装配置教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-03-03
  • 详细解读分布式锁原理及三种实现方式

    详细解读分布式锁原理及三种实现方式

    这篇文章从三种基于不同形式的分布式锁的实现,数据库、缓存和zookeeper,内容比较详细,具有一定参考价值,需要的朋友可以了解下。
    2017-10-10
  • mysql中如何用varchar字符串按照数字排序

    mysql中如何用varchar字符串按照数字排序

    这篇文章主要介绍了mysql中用varchar字符串按照数字排序方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08

最新评论