mysql5-触发器=创建与删除

本文介绍了MySQL触发器的基本概念,包括创建、使用及删除触发器的方法。详细解释了触发器的执行时机、支持的操作类型以及如何定义触发器。并通过示例说明了触发器的工作原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

由于公司业务需求,了解这方面业务,进行总结和查询资料的记录。

在执行某条语句,在事件发生时自动执行。

触发器是mysql响应以下任意语句而自动执行的一条mysql语句(或位于begin和end语句之间的一组语句)
delete
insert
update
其他的mysql语句不支持


创建触发器时最少四条信息
1.唯一的触发器名
2.触发器关联表
3.触发器应该响应的活动(delete/insert或update)
4.触发器何时执行(处理之前或之后)

保持每个数据库的触发器名唯一。在mysql5中,触发器名必须在每个表中唯一,但不是在每个数据库中唯一。这表示同一个数据库中的两个表可具有相同名字的触发器。这在其他每个数据库触发器必须唯一的dbms中是不允许的。而且以后的mysql版本可能会使用规则更为严格。因此,现在最好是在数据库方位内使用唯一的触发器名


触发器用create trigger语句创建。下面是一个简单的例子:

输入

create trigger newproduct after insert on products
for each row select 'Product added'
分析

 create trigger用来创建名为newproduct的新触发器。触发器可在一个操作发生之前或之后执行,这里给出了after insert

所以此触发器将在insert语句成功执行后执行。这个触发器还制定for each row,因此代码对每个插入行执行。在这个例子中

文本product added将对每个插入的行显示一次

 为了测试这个触发器,使用insert语句添加一行或者多行到products中,你将看到对每个成功的插入,显示Product added

消息

仅支持表:只有表才支持触发器,视图不支持(临时表也不支持)

触发器按每个表每个时间每次地定义,每个表每个事件每次只允许一个触发器因此,每个表最多支持6个触发器(每条insert/

update和delete的之前和之后。单一触发器不能与多个事件或多个表关联,所以,如果你需要一个insert和update操作执行

的触发器,则应该定义两个触发器

触发器失败: 如果before触发器失败,则mysql将不执行请求的操作。此外,如果before触发器或语句本身失败,mysql将

不执行after触发器(如果有的话)


删除触发器

 输入

DROP trigger newproduct
触发器不能更新或覆盖,为了修改一个触发器,必须先删除他,然后在重新创建
 
错误-
[Err] 1415 - Not allowed to return a result set from a trigger
由于返回的是结果集 SELECT 'Product added'; 
需要在后面加入into @args; 才可以运行测试on


1303 can t create a trigger from within another stored routine
无法从另一个存储例程中创建触发器。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值