mysql触发器的使用

 2024-02-26 04:02:26  阅读 0

什么是触发器?

触发器是与表相关的数据库对象,当满足定义的条件时触发并执行触发器中定义的语句集。 触发器的这一特性可以帮助应用程序确保数据库端的数据完整性。

比如你现在有两张表【用户表】和【日志表】,当创建用户时,需要将创建的日志插入到日志表中。 如果不使用触发器,则需要编写编程语言逻辑来实现,但是如果定义了触发器,触发器的作用就是在向日志表中插入一条数据后,帮助你向日志表中插入一条日志消息。用户表。 当然,触发器不仅可以执行插入操作,还可以执行修改和删除操作。

mysql 触发器中表_触发器mysql_mysql触发器ifelse

CREATE TRIGGER trigger_name trigger_time trigger_event ON tb_name FOR EACH ROW trigger_stmt

trigger_name:触发器的名称
tirgger_time:触发时机,为BEFORE或者AFTER
trigger_event:触发事件,为INSERTDELETE或者UPDATE
tb_name:表示建立触发器的表明,就是在哪张表上建立触发器
trigger_stmt:触发器的程序体,可以是一条SQL语句或者是用BEGIN和END包含的多条语句

触发特性:

1、begin end和begin end之间的语句; 可以简单地写,也可以复杂地写。

2.什么条件会触发:I、D、U

3.何时触发:添加、删除、修改之前或之后

4、触发频率:每行执行一次

5. 触发器在表上定义并附加到表上。

即,由事件触发操作。 事件包括陈述、陈述和陈述; 它们可以帮助应用程序确保数据库端数据的完整性。

AFTER 参数指定在事件之前或之后触发执行的时间。

> FOR EACH ROW 表示对一条满足触发事件的记录进行任何操作都会触发触发,即触发频率为每行数据触发一次。

> 详细说明:

类型①触发器:当插入某行时激活触发器,可能由LOAD DATA语句触发(LOAD DAT语句用于将文件加载到数据表中,相当于一系列操作);

②触发器类型:触发器在某一行发生改变时被激活,可能由一条语句触发;

③类型触发器:触发器在删除某一行时激活,可由语句触发。

尽可能少地使用触发器,不建议使用它们。

假设触发器每次执行1s,表有500条数据,那么触发器需要触发500次。 仅触发器执行时间就需要500s,500条数据总共时间为1s,这样的效率很低。 。 因此,我们需要特别关注的是触发器的begin end之间的语句的执行效率; 一定要高,资源消耗一定要小。

尽量少用触发器,因为无论如何,它仍然会消耗资源。 如果使用,请谨慎使用并确保它非常高效:触发器针对每一行; 记住不要添加、删除或修改非常频繁的表。 使用触发器,因为它们非常消耗资源。

创建触发器 触发器名称|AFTER 触发器事件

ON 表名 FOR EACH ROW

开始

执行语句列表

END;案例操作创建学生表

CREATE TABLE `student` (
  `name` varchar(255) COLLATE utf8_bin DEFAULT NULL,
  `age` int DEFAULT NULL,
  `sex` varchar(255) COLLATE utf8_bin DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

手动添加两行数据:

mysql触发器ifelse_mysql 触发器中表_触发器mysql

创建一个触发器,名称为:

CREATE TRIGGER check_student BEFORE UPDATE ON student
FOR EACH ROW
BEGIN
     IF NEW.age < 0 THEN
          SET NEW.age = 0;
      ELSEIF  NEW.age > 100 THEN
           SET  NEW.age = 50;
       END IF;
END

NEW 和 OLD 的详细解释

MySQL中定义了NEW和OLD来表示触发器所在表中触发触发器的数据行,引用触发器中发生变化的记录内容。 具体来说:

①在类型触发器中,NEW用于表示将要插入()或已经插入(AFTER)的新数据;

②在类型触发器中,用OLD表示将要或已修改的原始数据,用NEW表示将要或已修改的新数据;

③类型触发器中,OLD用于表示将要或已经被删除的原始数据;

指示:

新的。 (是对应数据表的列名)

另外,OLD是只读的,而NEW可以在触发器中使用SET赋值,这样就不会再次触发触发器,造成循环调用。

触发执行

UPDATE student set age =-10 where name ='张三' 

触发器mysql_mysql触发器ifelse_mysql 触发器中表

查看触发器

1.SHOW语句查看触发器信息

mysql> SHOW TRIGGERS;

触发器mysql_mysql触发器ifelse_mysql 触发器中表

结果,显示所有触发器的基本信息。

2.查看表中的触发器信息

mysql> * 来自 .;

显示所有触发器的详细信息; 同时该方法可以查询指定触发器的详细信息。

mysql> select * from information_schema.triggers 
    -> where trigger_name='check_student';

mysql触发器ifelse_触发器mysql_mysql 触发器中表

所有触发器信息都存储在数据库下的表中,可以使用语句查询。 如果触发信息过多,最好通过字段指定查询。

删除触发器 DROP [IF ] [.]

mysql触发器ifelse_触发器mysql_mysql 触发器中表

删除触发器后,最好再用上面的方法检查一下; 同时,还可以使用.trig来指定数据库中的触发器。

尖端:

如果不需要触发器,则必须将其删除,以避免意外操作。 这很关键。

标签: 触发 语句 操作

如本站内容信息有侵犯到您的权益请联系我们删除,谢谢!!


Copyright © 2020 All Rights Reserved 京ICP5741267-1号 统计代码