MySQL触发器
时间: 2023-07-22 20:05:42 浏览: 98
MySQL触发器是一种特殊的存储过程,用于在特定的表上自动执行操作。当满足特定的条件时,触发器会自动触发,并执行相应的SQL语句。
触发器可以在以下情况下被触发:
1. 在插入新行之前或之后。
2. 在更新行之前或之后。
3. 在删除行之前或之后。
MySQL支持两种类型的触发器:行级触发器和语句级触发器。
行级触发器会在每一行受到影响时被触发,而语句级触发器只会在SQL语句执行完毕后被触发一次。
创建触发器的语法如下:
```
CREATE TRIGGER trigger_name
{BEFORE | AFTER} {INSERT | UPDATE | DELETE}
ON table_name FOR EACH ROW
trigger_body
```
其中,`trigger_name`是触发器的名称,`BEFORE`或`AFTER`表示触发器是在操作之前还是之后被触发,`INSERT`、`UPDATE`或`DELETE`表示触发器是在插入、更新还是删除操作时被触发,`table_name`是要操作的表名,`FOR EACH ROW`表示触发器是行级触发器,`trigger_body`是触发器的具体操作。
例如,以下是一个在`orders`表上创建的触发器,当插入新的订单时,自动更新订单数量:
```
CREATE TRIGGER update_order_count
AFTER INSERT ON orders FOR EACH ROW
UPDATE order_counts SET count = count + 1 WHERE id = NEW.order_id;
```
在触发器的`trigger_body`中,可以使用`OLD`和`NEW`关键字来引用旧值和新值。例如,在更新操作中,`OLD`表示更新前的值,`NEW`表示更新后的值。
触发器提供了一种方便的方法来自动执行SQL语句,但需要注意的是,过多的触发器可能会影响数据库的性能。因此,在使用触发器时,应该谨慎考虑其对性能的影响。
阅读全文