当前位置:网站首页 > 技术博客 > 正文

mysql触发器详解



要创建触发器或删除触发器,请使用 or 语句,如和 中所述。

这是一个将触发器与表相关联以激活操作的简单示例。触发器充当累加器,对插入到表的某一列中的值求和。

该语句创建一个名为的触发器,该触发器与表相关联。它还包括指定触发器动作时间、触发事件以及触发器激活时要执行的操作的子句:

要使用触发器,将累加器变量设置为零,执行一条语句,然后查看变量的值:

在这种情况下,语句执行 后的 值为, 或 。

要销毁触发器,请使用语句。如果触发器不在默认架构中,则必须指定架构名称:

如果删除一个表,该表的所有触发器也会被删除。

触发器名称存在于模式命名空间中,这意味着所有触发器在模式中必须具有唯一名称。不同模式中的触发器可以具有相同的名称。

可以为具有相同触发事件和动作时间的给定表定义多个触发器。例如,您可以为一个表设置两个触发器。默认情况下,具有相同触发事件和动作时间的触发器按创建顺序激活。要影响触发器顺序,请在其后指定一个子句,该子句指示或 以及也具有相同触发器事件和操作时间的现有触发器的名称。使用 ,新触发器在现有触发器之后激活。使用,新触发器在现有触发器之前激活。

例如,以下触发器定义 为表定义了另一个触发器 :

此触发器类似于, 但分别累积存款和取款。它有一个 子句导致它在之前激活 ;如果没有该子句,它将在 之后激活,因为它是在 之后创建的 。

在触发器主体中,和 关键字使您能够访问受触发器影响的行中的列。并且 是触发器的 MySQL 扩展;它们不区分大小写。

在一个触发器中,只能 使用;没有旧行。在一个触发器中,只能 使用;没有新行。在 触发器中,您可以 在更新前 引用行的列,在更新后引用行的列。

/code>

名为 with 的列是只读的。您可以参考它(如果您有 权限),但不能修改它。如果您有 权限,可以引用名为 with 的列。在 触发器中,如果您有 权限,也可以更改它的值。这意味着您可以使用触发器来修改要插入到新行或用于更新行的值。(这样的 语句对触发器没有影响,因为行更改已经发生。) =

在触发器中,列的 值为0,而不是实际插入新行时自动生成的序列号。

通过使用该构造,您可以定义一个执行多条语句的触发器。在块内,您还可以使用存储例程中允许的其他语法,例如条件和循环。但是,和存储例程一样,如果使用程序定义一个执行多条语句的触发器,则需要重新定义语句分隔符,这样才能在触发器定义内使用语句分隔符。下面的例子说明了这些要点。它定义了一个 检查用于更新每一行的新值的触发器,并将值修改为在 0 到 100 的范围内。这必须是一个触发器,因为在使用该值更新行之前必须检查该值:

单独定义存储过程然后使用简单的语句 从触发器调用它会更容易 。如果您想从多个触发器中执行相同的代码,这也是有利的。

触发器在激活时执行的语句中可以出现的内容有一些限制:

另见。

MySQL 在触发器执行过程中处理错误的方式如下:

触发器可以按名称包含对表的直接引用,例如本例中显示的触发器名称:

假设您将以下值插入表 中,如下所示:

结果,四个表包含以下数据:

  • 上一篇: java集合视频教程
  • 下一篇: .so文件格式
  • 版权声明


    相关文章:

  • java集合视频教程2025-04-03 08:30:02
  • 网络安全设备有什么2025-04-03 08:30:02
  • microsoft visual c 20102025-04-03 08:30:02
  • l298n怎么接2025-04-03 08:30:02
  • 音乐 宿主2025-04-03 08:30:02
  • .so文件格式2025-04-03 08:30:02
  • linux wait函数头文件2025-04-03 08:30:02
  • 指针数组与数组指针的用法2025-04-03 08:30:02
  • debian镜像下载2025-04-03 08:30:02
  • vue2.0教程2025-04-03 08:30:02