我的编程空间,编程开发者的网络收藏夹
学习永远不晚

怎么创建MySQL的TRIGGER触发器

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

怎么创建MySQL的TRIGGER触发器

这篇文章主要讲解了“怎么创建MySQL的TRIGGER触发器”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么创建MySQL的TRIGGER触发器”吧!

MySQL TRIGGER(触发器)

数据库触发器是数据库中所维护的命名数据库对象,将在修改表中数据时被激活。使用触发器可以提高表中数据的功能和安全性级别。可以使用触发器控制对特定数据的访问权限、执行特定日志记录或对数据本身进行审计。

触发器是在修改表数据时激活的命名数据库对象。它们可以:

Ø  在插入或更新数据之前对数据进行检查并验证删除和更新

Ø  充当数据过滤器,在插入或更新之前修改超出范围的数据

Ø  修改INSERT、UPDATE 和DELETE 的行为方式

Ø  对于不支持外键的存储引擎,模仿外键的行为

Ø  提供日志记录功能

Ø  自动创建汇总表

1.1.        创建触发器

CREATE TRIGGER 语句:

CREATE TRIGGER trigger_name

{ BEFORE | AFTER }

{ INSERT | UPDATE | DELETE }

ON table_name FOR EACH ROW

triggered_statement

示例:

CREATE TRIGGER City_AD AFTER DELETE

ON City FOR EACH ROW

INSERT INTO DeletedCity (ID, Name) VALUES (OLD.ID, OLD.Name);

trigger_name 是为触发器指定的名称,而table_name 是要与触发器关联的表的名称。BEFORE 和AFTER 指示激活触发器的时间(是在触发事件之前或是之后),而INSERT、UPDATE 或DELETE 指示具体的事件。

注:表名OLD 和NEW 是指触发器可查看的虚拟表。这些表分别包含UPDATE 或DELETE语句所修改的数据的旧版本,或INSERT 或UPDATE 语句所添加的数据的新版本。

1.2.        触发器事件

BEFORE 和AFTER

BEFORE 和AFTER 关键字是指触发器的激活时间,相对于数据修改语句(INSERT、UPDATE 或DELETE)将更改写入底层数据库的时间。

BEFORE 关键字可使触发器在涉及的数据修改之前执行。可使用BEFORE 触发器捕获无效数据条目并在写入表之前对其进行更正或拒绝。

– BEFORE INSERT:在添加新数据之前触发

– BEFORE UPDATE:在使用新数据更新(或覆盖)现有数据之前触发

– BEFORE DELETE:在删除数据之前触发

AFTER 关键字定义在数据修改成功后执行的触发器。可使用AFTER 触发器记录或审计数据库中的数据修改。

– AFTER INSERT:在添加新数据之后触发

– AFTER UPDATE:在使用新数据更新(或覆盖)现有数据之后触发

– AFTER DELETE:在删除数据之后触发

1.3.        触发器错误处理

MySQL 按如下方式处理触发器执行期间发生的错误:

Ø  BEFORE 触发器失败,则包含相应行操作的事务将回滚。

Ø  AFTER 触发器执行,AFTER触发器事件和行操作必须成功执行。

Ø  对于非事务表,事务不可用。只有触发了触发器的语句会回滚。

触发器失败后,MySQL 会回滚包含导致触发器触发的语句的事务。

对于非事务表,无法完成此类回滚。因此,虽然语句失败,但在发生错误之前执行的所有更改仍然会生效。

1.4.        检查触发器

SHOW CREATE TRIGGER trigger_name

此语句返回可用于重新创建指定触发器的具体字符串。您必须知道触发器的名称才能运行此语句;对于SHOW CREATE TRIGGER 语句,不存在LIKE 或WHERE 语法。

SHOW TRIGGERS

此语句为MySQL 扩展。它可返回触发器的特征,如数据库、名称、类型、创建者以及创建和修改日期。此语句有一个优点:可基于LIKE 模式或WHERE 子句中提供的条件来显示特定触发器。如果未指定条件,则此语句会显示所有触发器的信息。

INFORMATION_SCHEMA.TRIGGERS:

此语句包含SHOW 命令所显示的所有数据,能够完整地呈现在所有数据库中可用的触发器。

1.5.        删除触发器

使用如下语法可显式删除触发器:

DROP TRIGGER [IF EXISTS] [schema_name.]trigger_name;

使用DROP TRIGGER trigger_name 时,服务器会在当前模式中查找该触发器的名称。如果要删除其他模式中的触发器,请包含模式名称。使用IF EXISTS 可防止因尝试删除不存在的触发器而出现的错误。通过删除针对其定义触发器的表或者包含触发器的数据库,可隐式删除触发器;

1.6.        对触发器的限制

Ø  不允许使用的语句包括:

l  SQL 预处理语句

l  显示或隐式COMMIT 和ROLLBACK

l  返回结果集的语句,例如,不包含INTO var_list 子句的SELECT 语句

l  FLUSH 语句

l  用于修改要应用触发器的表的语句

l  SHOW 语句

Ø  以下更改不会触发触发器:

l  级联外键所导致的更改

l  在基于行的复制过程中导致的更改

请通过使用SELECT ...INTO var_list,或者通过使用游标和FETCH 语句的方法在触发器中处理结果集。

1.7.        触发器权限

Ø  要执行CREATE TRIGGER 和DROP TRIGGER 命令,需要有TRIGGER 权限。

Ø  在触发器中使用OLD 和NEW需要的权限:要使用SET NEW.col_name = value 为列赋值,需要对该列拥有UPDATE 权限;要在表达式中使用NEW.col_name 以引用新的列值,需要对该列拥有SELECT 权限。

感谢各位的阅读,以上就是“怎么创建MySQL的TRIGGER触发器”的内容了,经过本文的学习后,相信大家对怎么创建MySQL的TRIGGER触发器这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

怎么创建MySQL的TRIGGER触发器

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

mysql触发器怎么创建

在 mysql 中创建触发器步骤:定义触发器:before/after 操作动作 on 指定表 for each row。指定触发器体:包含 sql 语句或 pl/sql 代码,可执行插入/更新/删除操作、发送通知、设置变量或使用条件。创建
mysql触发器怎么创建
2024-05-30

MySQL的触发器trigger怎么使用

MySQL的触发器(trigger)可以在特定的数据库操作发生时自动执行一系列的SQL语句。触发器可以在插入、更新或删除数据时触发执行,可以用于实现数据的验证、复制或自动化处理等功能。以下是MySQL中触发器的使用方法:1. 创建触发器:使
2023-08-11

MySQL数据库触发器trigger怎么使用

这篇文章主要讲解了“MySQL数据库触发器trigger怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“MySQL数据库触发器trigger怎么使用”吧!一、基本概念触发器是一种特殊类
2023-07-02

MySQL数据库触发器怎么创建

创建MySQL数据库触发器的语法如下:CREATE TRIGGER trigger_name{BEFORE | AFTER} {INSERT | UPDATE | DELETE}ON table_nameFOR EACH ROWt
2023-10-26

mysql创建触发器的语法

mysql 触发器的语法:create trigger [触发器名]before/after [insert/update/delete] on [表名]for each row[触发器主体]MySQL 触发器的语法触发器是一种数据库对象
mysql创建触发器的语法
2024-08-01

Oracle触发器trigger怎么使用

Oracle触发器(trigger)用于在指定的数据库操作发生时自动执行一段特定的代码,可以用于数据插入、更新或删除时执行特定的操作。以下是使用Oracle触发器的基本步骤:1. 创建一个触发器:```CREATE OR REPLACE T
2023-08-15

PostgreSQL怎么创建触发器

小编给大家分享一下PostgreSQL怎么创建触发器,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!在PostgreSQL数据库中,触发器可以作用在表或者视图上。想
2023-06-14

oracle怎么创建触发器

oracle 中的触发器是特定事件发生时自动执行的 sql 代码,用于数据操作语言 (dml) 操作(如插入、更新或删除)。创建触发器的语法为:create trigger [触发器名称] before/after [触发事件] on [表
oracle怎么创建触发器
2024-05-30

sqlserver触发器怎么创建

要创建一个SQL Server触发器,可以遵循以下步骤:打开SQL Server管理工具,连接到目标数据库。在数据库中找到需要创建触发器的表。右键点击该表,选择“新建触发器”选项。在弹出的对话框中,输入触发器的名称。在“触发器的类型
sqlserver触发器怎么创建
2024-02-29

详细解读MySQL的触发器trigger

触发器是由事件来触发某个操作,这些事件包括INSERT、UPDATE和DELETE语句。如果定义了触发程序,当数据库执行这些语句的时候就会激发触发器执行相应的操作,需要的朋友可以参考下
2023-05-19

mysql触发器trigger的使用案例

这篇文章主要介绍了mysql触发器trigger的使用案例,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。什么是触发器触发器是与表有关的数据库对象,在满足定义条件时触发,并执行
2023-06-14

编程热搜

目录