`
froast
  • 浏览: 254209 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

在mysql中使用触发器

阅读更多

MYSQL是在5.0以后的版本中引入触发器的。

有的时候,可以用触发器来维护数据的完整性。如我有一个表ge_element,该表中有一个region_id,对应到ge_region表中的id,但是,region_id是可以为空的,所以不应该设置外键约束,而我在删除ge_region表中的记录时,希望把在ge_element表中被引用到的记录的region_id设为0,因为没有数据库的外键约束,我只能在程序中操作,但我又不想通过程序来操作,因为引用region_id的表可能不只ge_element一个,这时,就可能用到触发器,在删除ge_region表中的记录时,把被引用的表中的region_id设为0。

1.创建触发器的语句:

CREATE TRIGGER <触发器名称> <--
{ BEFORE | AFTER }
{ INSERT | UPDATE | DELETE }
ON <表名称>
FOR EACH ROW
<触发器SQL语句>

  触发器必须有名字,最多64个字符,可能后面会附有分隔符.它和MySQL中其他对象的命名方式基本相象.

  这里我有个习惯:就是用表的名字+'_'+触发器类型的缩写.因此如果是表t26,触发器是在事件UPDATE(参考下面的点(2)和(3))之前(BEFORE)的,那么它的名字就是t26_bu。

可以直接在EMS中创建触发器。

 

2.触发时间:

Before表示在事件发生之前执行触发器,After表示在事件发生之后执行触发器;

 

3.触发事件:

三个事件:insert, update, delete

 

4.触发器与表的关系:

触发器是属于一个表的,当在这个表上执行insert, update, delete操作时,就会导致相应的触发器被激活;

不能给同一个表的同一个操作创建两个不同的触发器。

 

5.触发间隔:

FOR EACH ROW 子句通知触发器每隔一行执行一次动作,而不是对整下表执行一次。

 

6.触发的SQL语句:

触发器包含所要触发的SQL语句:这里的语句可以是任何合法的语句,包括复合语句,但是这里的语句受的限制和函数的一样。

复合语句(BEGIN / END)是合法的.

流控制(Flow-of-control)语句(IF, CASE, WHILE, LOOP, WHILE, REPEAT, LEAVE,ITERATE)也是合法的.

变量声明(DECLARE)以及指派(SET)是合法的.

允许条件声明.

异常处理声明也是允许的.

但是在这里要记住函数有受限条件:不能在函数中访问表.因此在函数中使用以下语句是非法的。

 

7.创建触发器的权限:

你必须要有相当大的权限才能够创建触发器;我在创建触发器的时候提示要有super privilege才可以创建;

分享到:
评论

相关推荐

    mysql中触发器使用详解.docx

    在触发器中,`NEW`和`OLD`是两个特殊变量,用于访问触发器操作所涉及的行。对于`INSERT`操作,`NEW`变量包含即将插入(`BEFORE`触发器)或已插入(`AFTER`触发器)的数据。在`UPDATE`操作中,`OLD`变量保存原始数据...

    mysql触发器之触发器的增删改查操作示例

    MySQL触发器在实际应用中扮演着重要角色,比如在数据插入、更新或删除前后的验证、审计日志记录、数据同步和计算复杂业务逻辑等场景。触发器的使用应该谨慎,因为它们可能会增加数据库的复杂性,并可能导致性能问题...

    MySQL触发器、存储过程、自定义函数、视图示例

    以上四个示例分别介绍了如何在MySQL中使用触发器、存储过程、自定义函数和视图。这些功能可以帮助开发者更好地管理数据库,实现更高效的数据操作和维护。 - **触发器**:在数据发生变化时自动执行,通常用于审计...

    mysql触发器之创建多个触发器操作实例分析

    本文实例讲述了mysql触发器之创建多个触发器操作。分享给大家供大家参考,具体如下: 这次记录的内容mysql 版本必须得是5.7.2+的哈,之前的会不好使的。废话不多说,咱们开始正文哈。 在mysql 5.7.2+版本之前,我们...

    Mysql触发器介绍

    在实际应用中,例如凤巢系统、北斗系统以及哥伦布系统等大型项目中广泛采用了 MySQL 5.0.45 版本,并且在这些系统中触发器被频繁使用以实现在数据变更时的关联操作。 #### 二、MySQL触发器概述 ##### 2.1 触发器的...

    触发器在提高MySQL安全性的新应用.pdf

    【MySQL触发器在提高安全性中的应用】 MySQL数据库作为一款广泛使用的开源关系型数据库管理系统,由于其免费、高效和易用的特性,在中小型企业中得到广泛应用。然而,随着网络攻击手段的日益复杂,如何确保数据库的...

    MySQL 5.0 触发器.rar

    在学习和使用MySQL 5.0触发器的过程中,你可以参考提供的书籍教程《MySQL 5.0 触发器》。这本书可能涵盖了触发器的基础概念、创建和管理触发器的方法、示例应用以及最佳实践。同时,文件`下载说明.txt`可能包含获取...

    MYSQL触发器教程.doc

    MySQL触发器是数据库管理系统中的一种重要机制,它允许在特定的数据库操作(如INSERT、UPDATE、DELETE)发生前后自动执行一段预定义的SQL代码。触发器的引入是为了满足更复杂的数据完整性需求,提供数据验证、业务...

    mysql触发器使用

    在深入探讨MySQL触发器的使用之前,我们先来理解一下什么是触发器以及它在数据库管理中的作用。触发器是数据库中一种特殊的存储过程,当特定的事件(如INSERT、UPDATE或DELETE操作)在指定的表上发生时自动执行。...

    MySQL触发器.pdf

    ### MySQL触发器详解 #### 引言 MySQL作为一款广泛使用的开源关系型数据库管理系统,在其5.0版本中引入了许多重要的新特性,其中最引人注目的是存储过程、触发器、视图等高级功能的加入。本文将重点讨论MySQL 5.0...

    mysql触发器之创建使用触发器简单示例

    本文实例讲述了mysql触发器之创建使用触发器。分享给大家供大家参考,具体如下: 我们可以可以使用CREATE TRIGGER语句创建一个新的触发器,来看下具体的语法: CREATE TRIGGER trigger_name trigger_time trigger_...

    MySQL触发器.rar

    MySQL触发器是数据库管理系统中的一个重要概念,主要用于在特定的数据操作(如INSERT、UPDATE或DELETE)发生时自动执行预定义的SQL语句。这些语句可以是复杂的业务逻辑,用于实现数据验证、同步或其他自动化任务。...

    MYSQL触发器使用详解

    MYSQL触发器,可以使用它用来进行监控,例如商品价格变化,下单后商品库存减少等实用性操作!

    Oracle使用触发器和mysql中使用触发器的案例比较

     举例:论坛的发帖,每插入一个帖子都希望将版面表中的最后发帖时间,帖子总数字段进行同步更新,这时使用触发器效率会很高。 二、Oracle 使用 PL/SQL 编写触发器 1.–PL/SQL创建触发器的一般语法 create [or ...

    mysql触发器文档

    在触发器中,可以引用特殊的`OLD`和`NEW`列来访问被修改的记录。`OLD`用于获取更改前的数据,而`NEW`则用于获取更改后的数据。这些特殊列只在相应的触发器中可用。 #### 创建触发器示例 下面是一个创建触发器的基本...

    实验九MySQL的触发器.pdf

    通过这个实验,学生可以深入理解MySQL触发器的工作原理,以及如何在实际环境中应用它们来增强数据库的管理和安全性。实验报告应包含实验步骤、观察结果、问题分析和总结,以巩固理论知识和实践技能。

    mysql-事件,触发器,事务-实验七.docx

    MySQL 触发器是 MySQL 中的一种机制,可以在表中的数据发生变化时自动执行某些操作。触发器有两个优点:一是可以实时监控表中的数据变化;二是可以自动执行某些操作,如数据验证、数据转换等。但是,触发器也存在...

    mysql触发器

    MySQL触发器是数据库管理系统中的一个重要特性,它允许在特定的数据库操作(如INSERT、UPDATE、DELETE)发生之前或之后执行自定义的SQL代码。这些自动执行的程序段可以帮助实现业务规则,数据验证,或者在数据发生...

    mysql 触发器文档

    在触发器中,可以通过`OLD`和`NEW`关键字引用行的旧值和新值。 **示例:** ```sql CREATE TRIGGER trg_name BEFORE UPDATE ON employees FOR EACH ROW BEGIN IF OLD.salary &lt;&gt; NEW.salary THEN INSERT INTO ...

Global site tag (gtag.js) - Google Analytics