广告
返回顶部
首页 > 资讯 > 数据库 >怎么在mysql中创建一个触发器
  • 714
分享到

怎么在mysql中创建一个触发器

2024-04-02 19:04:59 714人浏览 薄情痞子
摘要

本篇文章为大家展示了怎么在Mysql中创建一个触发器,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。我们可以可以使用CREATE TRIGGER语句创建一个新的触发器

本篇文章为大家展示了怎么在Mysql中创建一个触发器,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

我们可以可以使用CREATE TRIGGER语句创建一个新的触发器,来看下具体的语法:

CREATE TRIGGER trigger_name trigger_time trigger_event
 ON table_name
 FOR EACH ROW
 BEGIN
 ...
 END;

然后我们来详细看下上述sql的具体含义:

  • 将触发器名称放在CREATE TRIGGER语句之后。触发器名称应遵循命名约定[trigger time]_[table name]_[trigger event],例如before_employees_update。

  • 触发激活时间可以在之前或之后。必须指定定义触发器的激活时间。如果要在更改之前处理操作,则使用BEFORE关键字,如果在更改后需要处理操作,则使用AFTER关键字。

  • 触发事件可以是INSERT,UPDATE或DELETE。此事件导致触发器被调用。 触发器只能由一个事件调用。要定义由多个事件调用的触发器,必须定义多个触发器,每个事件一个触发器。

  • 触发器必须与特定表关联。没有表触发器将不存在,所以必须在ON关键字之后指定表名。

  • 将SQL语句放在BEGIN和END块之间。这是定义触发器逻辑的位置。

大概了解了之后,我们就来尝试创建触发器来记录employees表中行数据的更改情况,先来看下这个表的结构:

mysql> DESC employees;
+----------------+--------------+------+-----+---------+-------+
| Field     | Type     | Null | Key | Default | Extra |
+----------------+--------------+------+-----+---------+-------+
| employeeNumber | int(11)   | NO  | PRI | NULL  |    |
| lastName    | varchar(50) | NO  |   | NULL  |    |
| firstName   | varchar(50) | NO  |   | NULL  |    |
| extension   | varchar(10) | NO  |   | NULL  |    |
| email     | varchar(100) | NO  |   | NULL  |    |
| officeCode   | varchar(10) | NO  | MUL | NULL  |    |
| reportsTo   | int(11)   | YES | MUL | NULL  |    |
| jobTitle    | varchar(50) | NO  |   | NULL  |    |
+----------------+--------------+------+-----+---------+-------+
8 rows in set

我们再来创建一个名为employees audit的新表,用来保存employees表中数据的更改:

CREATE TABLE employees_audit (
  id INT AUTO_INCREMENT PRIMARY KEY,
  employeeNumber INT NOT NULL,
  lastname VARCHAR(50) NOT NULL,
  changedat DATETIME DEFAULT NULL,
  action VARCHAR(50) DEFAULT NULL
);

再来创建一个BEFORE UPDATE触发器,该触发器在对employees表中的行记录更改之前被调用:

DELIMITER $$
CREATE TRIGGER before_employee_update 
  BEFORE UPDATE ON employees
  FOR EACH ROW 
BEGIN
  INSERT INTO employees_audit
  SET action = 'update',
   employeeNumber = OLD.employeeNumber,
    lastname = OLD.lastname,
    changedat = NOW(); 
END$$
DELIMITER ;

在上述触发器的主体中,我们使用OLD关键字来访问受触发器影响的行的employeeNumber和lastname列。我们要注意的是,在为insert定义的触发器中,可以仅使用NEW关键字。不能使用OLD关键字。但是,在为DELETE定义的触发器中,没有新行,因此您只能使用OLD关键字。在update触发器中,OLD是指更新前的行,而NEW是更新后的行。

然后,我们可以使用SHOW TRIGGERS语句,来查看数据库中的触发器:

mysql> SHOW TRIGGERS;
+------------------------+--------+-----------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------+------------------------+-----------------------------------------------------------------------------------+----------------+----------------------+----------------------+--------------------+
| Trigger        | Event | Table   | Statement                                                                               | Timing | Created        | sql_mode                                     | Definer    | character_set_client | collation_connection | Database Collation |
+------------------------+--------+-----------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------+------------------------+-----------------------------------------------------------------------------------+----------------+----------------------+----------------------+--------------------+
| before_employee_update | UPDATE | employees | BEGIN
  INSERT INTO employees_audit
  SET action = 'update',
   employeeNumber = OLD.employeeNumber,
    lastname = OLD.lastname,
    changedat = NOW();
END | BEFORE | 2017-08-02 22:06:36.40 | ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION | root@localhost | utf8         | utf8_general_ci   | utf8_general_ci  |
+------------------------+--------+-----------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------+------------------------+-----------------------------------------------------------------------------------+----------------+----------------------+----------------------+--------------------+
1 row in set

完事我们就来更新employees表以检查触发器是否被调用:

UPDATE employees 
SET 
  lastName = 'Maxsu'
WHERE
  employeeNumber = 1056;

可以使用以下查询来查询employees_audit表,用以检查触发器是否被UPDATE语句调用:

mysql> SELECT * FROM employees_audit;
+----+----------------+----------+---------------------+--------+
| id | employeeNumber | lastname | changedat      | action |
+----+----------------+----------+---------------------+--------+
| 1 |      1056 | Hill   | 2017-08-02 22:15:51 | update |
+----+----------------+----------+---------------------+--------+
1 row in set

上述内容就是怎么在mysql中创建一个触发器,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注编程网数据库频道。

您可能感兴趣的文档:

--结束END--

本文标题: 怎么在mysql中创建一个触发器

本文链接: https://www.lsjlt.com/news/55376.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 怎么在mysql中创建一个触发器
    本篇文章为大家展示了怎么在mysql中创建一个触发器,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。我们可以可以使用CREATE TRIGGER语句创建一个新的触发器...
    99+
    2022-10-18
  • MySQL中怎么创建一个触发器
    MySQL中怎么创建一个触发器,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。 --创建测试表Mar...
    99+
    2022-10-18
  • 怎么在postgresl中创建一个触发器
    在postgresl中创建触发器的方法:1.启动postgresql服务;2.登录postgresql数据库;3.使用数据库;4.在数据库新建表;5.执行CREATE TRIGGER语句创建触发器;具体步骤如下:首先,在命令行中启动post...
    99+
    2022-10-05
  • mysql中怎么建立一个触发器
    本篇文章给大家分享的是有关mysql中怎么建立一个触发器,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。创建触发器。创建触发器语法如下:&nbs...
    99+
    2022-10-18
  • mysql怎么创建触发器
    这篇文章给大家分享的是有关mysql怎么创建触发器的内容。小编觉得挺实用的,因此分享给大家做个参考。一起跟随小编过来看看吧。MySQL创建触发器首先要创建触发器中待存储的表,然后再设定触发器被激活的时刻,最...
    99+
    2022-10-18
  • 怎么创建MySQL的TRIGGER触发器
    这篇文章主要讲解了“怎么创建MySQL的TRIGGER触发器”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么创建MySQL的TRIGGER触发器”吧!My...
    99+
    2022-10-18
  • MySQL数据库触发器怎么创建
    创建MySQL数据库触发器的语法如下: CREATE TRIGGER trigger_name {BEFORE | AFTER} {...
    99+
    2023-10-26
    MySQL数据库
  • 怎么创建和使用mysql触发器
    这篇文章主要讲解了怎么创建和使用mysql触发器,内容清晰明了,对此有兴趣的小伙伴可以学习一下,相信大家阅读完之后会有帮助。什么是触发器 触发器用来在某些操作之后/之前,“自动”执行一些操作。(比...
    99+
    2022-10-18
  • MySQL触发器怎么创建和使用
    这篇文章主要介绍“MySQL触发器怎么创建和使用”,在日常操作中,相信很多人在MySQL触发器怎么创建和使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”MySQL触发器怎么...
    99+
    2022-10-19
  • 怎么创建触发器
    怎么创建触发器?针对这个问题,这篇文章给出了相对应的分析和解答,希望能帮助更多想解决这个问题的朋友找到更加简单易行的办法。什么是触发器?触发器用来在某些操作之后/之前,“自动”执行一些操作。(比如插入了新的...
    99+
    2022-10-18
  • MySQL中如何创建触发器
    不知道大家之前对类似MySQL中如何创建触发器的文章有无了解,今天我在这里给大家再简单的讲讲。感兴趣的话就一起来看看正文部分吧,相信看完MySQL中如何创建触发器你一定会有所收获的。1. 背景  ...
    99+
    2022-10-18
  • 怎么在MySQL中创建一个用户
    本篇文章为大家展示了怎么在MySQL中创建一个用户,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。1.使用CREATE USER语句创建用户CREATE U...
    99+
    2022-10-18
  • mysql触发器之创建多个触发器操作的示例分析
    这篇文章将为大家详细讲解有关mysql触发器之创建多个触发器操作的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。这次记录的内容mysql 版本必须得是5.7.2+...
    99+
    2022-10-18
  • PostgreSQL怎么创建触发器
    小编给大家分享一下PostgreSQL怎么创建触发器,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!在PostgreSQL数据库中,触发器可以作用在表或者视图上。想...
    99+
    2023-06-14
  • SQL SERVER触发器怎么创建
    本篇内容主要讲解“SQL SERVER触发器怎么创建”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“SQL SERVER触发器怎么创建”吧!触发器是一种特殊的存储过程,触发器主...
    99+
    2023-06-29
  • MYSQL中怎么创建一个视图
    MYSQL中怎么创建一个视图,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。一. 视图概述视图是一个虚拟表,其内容由查询定义。同真实的表一样...
    99+
    2022-10-18
  • 怎么在java中创建一个构造器
    这篇文章将为大家详细讲解有关怎么在java中创建一个构造器,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。Java有哪些集合类Java中的集合主要分为四类:1、List列表:有序的,可重复的;...
    99+
    2023-06-14
  • SQL Server的触发器怎么创建
    这篇文章主要讲解了“SQL Server的触发器怎么创建”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“SQL Server的触发器怎么创建”吧!触发器是一种特殊类型的存储...
    99+
    2023-06-29
  • 怎么在java中创建一个Stream
    怎么在java中创建一个Stream?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。Java的特点有哪些Java的特点有哪些1.Java语言作为静态面向对象编程语言的代表,实现了...
    99+
    2023-06-14
  • 怎么在SpringBoot中创建一个RSocket服务器
    这期内容当中小编将会给大家带来有关怎么在SpringBoot中创建一个RSocket服务器,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。首先,检查是否安装了以下必备组件:Java8或更高版本的JavaSD...
    99+
    2023-06-15
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作