`
小学毕业
  • 浏览: 14017 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
文章分类
社区版块
存档分类
最新评论

mysql触发器的实例

 
阅读更多
CREATE TRIGGER <触发器名称>  --触发器必须有名字,最多64个字符,可能后面会附有分隔符.它和MySQL中其他对象的命名方式基本相象.
{ BEFORE | AFTER }  --触发器有执行的时间设置:可以设置为事件发生前或后。
{ INSERT | UPDATE | DELETE }  --同样也能设定触发的事件:它们可以在执行insert、update或delete的过程中触发。
ON <表名称>  --触发器是属于某一个表的:当在这个表上执行插入、 更新或删除操作的时候就导致触发器的激活. 我们不能给同一张表的同一个事件安排两个触发器。
FOR EACH ROW  --触发器的执行间隔:FOR EACH ROW子句通知触发器 每隔一行执行一次动作,而不是对整个表执行一次。
<触发器SQL语句>  --触发器包含所要触发的SQL语句:这里的语句可以是任何合法的语句, 包括复合语句,但是这里的语句受的限制和函数的一样。

--你必须拥有相当大的权限才能创建触发器(CREATE TRIGGER),如果你已经是Root用户,那么就足够了。这跟SQL的标准有所不同。


~~实例~~ Example1:
创建表tab1
DROP TABLE IF EXISTS tab1;
CREATE TABLE tab1(
    tab1_id varchar(11)
);

创建表tab2
DROP TABLE IF EXISTS tab2;
CREATE TABLE tab2(
    tab2_id varchar(11)
);

创建触发器:t_afterinsert_on_tab1
作用:增加tab1表记录后自动将记录增加到tab2表中
DROP TRIGGER IF EXISTS t_afterinsert_on_tab1;
CREATE TRIGGER t_afterinsert_on_tab1
AFTER INSERT ON tab1
FOR EACH ROW
BEGIN

     if new.tab1_id is not null then
        insert into tab2(tab2_id) values(new.tab1_id);

     end if;
END;

测试一下
INSERT INTO tab1(tab1_id) values('0001');

看看结果
SELECT * FROM tab1;
SELECT * FROM tab2;

Example2:
创建触发器:t_afterdelete_on_tab1
作用:删除tab1表记录后自动将tab2表中对应的记录删去
DROP TRIGGER IF EXISTS t_afterdelete_on_tab1;
CREATE TRIGGER t_afterdelete_on_tab1
AFTER DELETE ON tab1
FOR EACH ROW
BEGIN
      delete from tab2 where tab2_id=old.tab1_id;
END;

测试一下
DELETE FROM tab1 WHERE tab1_id='0001';
看看结果
SELECT * FROM tab1;
SELECT * FROM tab2;





postscript:

查看触发器用 show tiggers

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

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

触发间隔:

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



在触发器的SQL语句中,你可以关联表中的任意列。但你不能仅使用列的名称去标识,那会使系统混淆,因为那里可能会有列的新名(这可能正是你要修改的,你的动作可能正是要修改列名),还有列的旧名存在。因此你必须用这样的语法来标识:

  "NEW . column_name"或者"OLD . column_name".这样在技术上处理(NEW | OLD . column_name)新和旧的列名属于创建了过渡变量("transition variables")。

  对于INSERT语句,只有NEW是合法的;对于DELETE语句,只有OLD才合法;而UPDATE语句可以在和NEW以及OLD同时使用。



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

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

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

  允许条件声明.



你必须拥有相当大的权限才能创建触发器(CREATE TRIGGER)。如果你已经是Root用户,那么就足够了。这跟SQL的标准有所不同,我也希望能尽快改成标准的。

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



触发器相对而言比较新,因此会有(bugs)缺陷.所以我在这里给大家警告,就像我在存储过程书中所说那样.不要在含有重要数据的数据库中使用这个触发器,如果需要的话在一些以测试为目的的数据库上使用,同时在你对表创建触发器时确认这些数据库是默认的。
分享到:
评论

相关推荐

    mysql触发器实例

    内含mysql的trigger触发器实例,修改即可使用。。。。。。

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

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

    MySQL 触发器详解及简单实例

    MySQL触发器是数据库管理系统中的一种重要特性,它允许在特定的数据库操作(如INSERT、UPDATE或DELETE)之前或之后执行自定义的SQL语句。触发器可以用来维护数据的完整性和一致性,执行复杂的业务逻辑,或者实现一些...

    mysql触发器使用实例

    MySQL触发器是数据库管理系统中的一个重要特性,它允许在特定的数据操作(如INSERT、UPDATE或DELETE)发生时自动执行预定义的SQL语句。这为数据库的业务规则提供了强大的支持,可以确保数据的一致性和完整性。以下是...

    mysql触发器使用

    通过以上两个实例,我们可以看到MySQL触发器的强大功能,它们能够在无需编程的情况下自动执行预设的逻辑,大大简化了数据库的管理和维护工作。无论是数据的自动统计,还是审计日志的记录,触发器都能够提供高效且...

    mysql中触发器使用详解.docx

    MySQL中的触发器是一种数据库对象,它与特定的表相关联,并在对表执行INSERT、UPDATE或DELETE操作之前或之后自动执行预定义的SQL语句。触发器的主要作用是增强数据库的逻辑控制,确保数据完整性、记录操作日志以及...

    mysql触发器(Trigger)简明总结和使用实例

    MySQL触发器是数据库管理系统中的一个重要概念,主要用于在特定的数据操作(如INSERT、UPDATE或DELETE)发生时自动执行预定义的SQL语句。触发器可以增强数据的完整性和一致性,实现复杂的业务逻辑,而无需在应用程序...

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

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

    mysql触发器.zip

    MySQL触发器是数据库管理系统中的一个重要特性,它允许在特定的数据库操作(如INSERT、UPDATE或DELETE)发生之前或之后执行自定义的SQL代码。这些自动执行的代码块可以用来实现复杂的业务逻辑,确保数据的一致性和...

    mysql触发器

    五、触发器实例 - **INSERT触发器**:当向表中插入新数据时执行。 - **UPDATE触发器**:当对表中的数据进行更新时执行。可以用于验证更新后的数据是否满足特定条件,或者同步相关表的数据。 - **DELETE触发器**:当...

    mysql触发器.pdf

    **MySQL触发器概念** 触发器是一种特殊类型的存储程序,它会在数据库表上的特定事件发生时自动执行。这些事件包括 INSERT、UPDATE 和 DELETE 操作。触发器可以在行级上执行,也就是说,它们可以对表中的每一行受到...

    mysql 触发器用法实例详解

    MySQL触发器语法详解:  触发器 trigger是一种特殊的存储过程,他在插入(inset)、删除(delete)或修改(update)特定表中的数据时触发执行,它比数据本身标准的功能更精细和更复杂的数据控制能力。触发器不是由...

    mysql 触发器文档

    本篇文档将着重介绍触发器这一特性,通过详细的解析与实例演示帮助用户了解如何在实际项目中有效地使用触发器。 #### 规约与风格 为了更好地展示实际代码,如来自MySQL客户端程序的输出结果,本文档将采用特殊字体...

    MySQL触发器代码

    本文详细介绍了MySQL触发器的概念、作用以及一个具体的触发器实例。通过这个实例,我们不仅学习了如何创建触发器,还了解了如何在触发器中使用变量、条件判断等SQL语句,以及如何处理数据完整性的问题。触发器是...

    MySQL 触发器定义与用法简单实例

    MySQL触发器是数据库管理系统中的一个重要特性,用于在特定的数据操作(如INSERT、UPDATE或DELETE)发生时自动执行预定义的SQL语句。触发器的主要作用是实现数据的完整性约束,或者进行复杂的业务逻辑处理,而这些...

    MySQL触发器运用于迁移和同步数据的实例教程

    初始的MySQL触发器设计会导致死循环,因为更新操作会再次触发触发器,形成无限递归。为了解决这个问题,我们需要将触发器设置为在操作之前执行(BEFORE),这样在数据被实际写入表之前就完成分类计算,避免了死循环...

    mysql使用实例book-MySQL

    《MySQL使用实例book》是一本全面讲解MySQL数据库应用与开发的书籍,旨在帮助读者逐步掌握MySQL的实际操作技巧。通过对本书的学习,你可以深入了解MySQL在实际工作中的应用,提升数据库管理、查询优化以及数据存储的...

    mysql触发器原理与用法实例分析

    MySQL触发器是数据库管理系统中的一种重要机制,它允许在特定的数据操作(如INSERT、UPDATE或DELETE)发生时自动执行预定义的SQL语句。触发器主要用于实现数据完整性约束,业务规则的强制,以及数据的自动处理。以下...

Global site tag (gtag.js) - Google Analytics