求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Model Center   Code  
会员   
要资料
 
 

mysql教程
MySQL快速学习入门
MySQL是什么
MySQL安装
MySQL示例数据库
MySQL导入示例数据库
MySQL基础教程
MySQL查询数据
MySQL WHERE语句
MySQL插入数据
MySQL更新表数据
MySQL删除表数据
MySQL创建与删除数据库
MySQL创建表
MySQL修改表结构
MySQL重命名表
MySQL数据类型
高级部分
MySQL技巧
MySQL存储过程
MySQL视图
MySQL触发器
MySQL管理
MySQL全文搜索
MySQL函数
应用程序连接
MySQL+Node.js连接和操作
Python+MySQL连接和操作
 
 

MySQL触发器实现
558 次浏览
1次  

在本教程中,您将了解MySQL触发器实现。另外,我们将向展示MySQL如何将触发器和触发器的限制存储在MySQL中。

MySQL触发器简介

在MySQL中,触发器是一组SQL语句,当对相关联的表上的数据进行更改时,会自动调用该语句。 触发器可以被定义为在INSERT,UPDATE或DELETE语句更改数据之前或之后调用。在MySQL5.7.2版本之前,每个表最多可以定义六个触发器。

BEFORE INSERT - 在数据插入表之前被激活触发器。

AFTER INSERT - 在将数据插入表之后激活触发器。

BEFORE UPDATE - 在表中的数据更新之前激活触发器。

AFTER UPDATE - 在表中的数据更新之后激活触发器。

BEFORE DELETE - 在从表中删除数据之前激活触发器。

AFTER DELETE - 从表中删除数据之后激活触发器。

但是,从MySQL 5.7.2+版本开始,可以为相同的触发事件和动作时间定义多个触发器。

当使用不使用INSERT,DELETE或UPDATE语句更改表中数据的语句时,不会调用与表关联的触发器。 例如,TRUNCATE语句删除表的所有数据,但不调用与该表相关联的触发器。

有些语句使用了后台的INSERT语句,如REPLACE语句或LOAD DATA语句。如果使用这些语句,则调用与表关联的相应触发器。

必须要为与表相关联的每个触发器使用唯一的名称。可以为不同的表定义相同的触发器名称,这是一个很好的做法。

应该使用以下命名约定命名触发器:

(BEFORE | AFTER)_tableName_(INSERT| UPDATE | DELETE)

例如,before_order_update是更新orders表中的行数据之前调用的触发器。

以下命名约定与上述一样。

tablename_(BEFORE | AFTER)_(INSERT| UPDATE | DELETE)

例如,order_before_update与上述before_order_update触发器相同。

MySQL触发存储

MySQL在数据目录中存储触发器,例如:/data/yiibaidb/,并使用名为tablename.TRG和triggername.TRN的文件:

tablename.TRG文件将触发器映射到相应的表。

triggername.TRN文件包含触发器定义。

可以通过将触发器文件复制到备份文件夹来备份MySQL触发器。也可以使用mysqldump工具备份触发器。

MySQL触发限制

MySQL触发器覆盖标准SQL中定义的所有功能。 但是,在应用程序中使用它们之前,您应该知道一些限制。

MySQL触发器不能:

使用在SHOW,LOAD DATA,LOAD TABLE,BACKUP DATABASE,RESTORE,FLUSH和RETURN语句之上。

使用隐式或明确提交或回滚的语句,如COMMIT,ROLLBACK,START TRANSACTION,LOCK/UNLOCK TABLES,ALTER,CREATE,DROP,RENAME等。

使用准备语句,如PREPARE,EXECUTE等

使用动态SQL语句。

从MySQL 5.1.4版本开始,触发器可以调用存储过程或存储函数,在这之前的版本是有所限制的。

在本教程中,我们向您展示了如何在MySQL中实现触发器。我们还讨论了触发器的存储以及触发器在MySQL中的局限性。


您可以捐助,支持我们的公益事业。

1元 10元 50元





认证码: 验证码,看不清楚?请点击刷新验证码 必填



558 次浏览
1次
 捐助