创建和使用触发器
触发器
希望某条语句(或某些语句)、存储过程在事件发生时自动执行
注意只有表才支持触发器,视图和临时表不支持
例如:
- 增加顾客信息到表中时检查其电话号码格式是否正确
- 订购产品时,库存数量减去订购数量
- 无论何时删除一行,都在某个存档表中保留一个副本
需要在某额表发生更改时自动处理,此为触发器。
触发器是MySQL响应以下语句而自动执行的一条SQL或存储过程
- DELETE
- INSERT
- UPDATE
创建触发器
使用CREATE TRIGGER创建,创建触发器需要明确4点信息:
- 唯一的触发器名
- 触发器关联的表
- 触发器响应的活动(DELETE、INSERT、UPDATE)
- 触发器何时执行
CREATE TRIGGER newproduct AFTER INSERT ON products FOR EACH ROW
SELECT
"Product added" INTO @newproduct;
此触发器将在INSERT语句成功执行后执行。文本productadded将对每个插入的行显示一次。
注意
每个表的每个事件只允许一个触发器。每个表最多支持6个触发器(INSET、UPDATE、DELETE)。
单一触发器不能与多个事件或多个表关联,如果
触发器失败
如果BEFORE触发器失败,则MySQL将不执行请求的操作。
BEFORE触发器或语句本身失败,MySQL将不执行AFTER触发器
删除触发器
触发器不能更新或覆盖,如果修改一个触发器必须要删除后再重新创建
DROP TRIGGER newproduct;
Comments | 0 条评论