# 触发器用法

URL: https://caijiao.org/mariadb/program/trigger/basic
Source: docs/mariadb/program/trigger/basic.md
Description: 本节介绍 MariaDB 中触发器的定义和使用方法，讲解如何在数据操作时自动执行特定逻辑，提升数据库自动化和数据完整性。

## 1. 什么是触发器

触发器（Trigger）是绑定在表上的特殊存储程序，当对表进行 INSERT、UPDATE 或 DELETE 操作时自动执行，用于实现自动化业务逻辑和数据校验。

## 2. 触发器的分类

- **BEFORE 触发器**：在数据操作之前执行，可用于验证或修改数据。
- **AFTER 触发器**：在数据操作之后执行，常用于日志记录或联动操作。

## 3. 创建触发器语法

```sql
CREATE TRIGGER trigger_name
{BEFORE | AFTER} {INSERT | UPDATE | DELETE}
ON table_name FOR EACH ROW
BEGIN
    -- 触发器逻辑
END;
````

## 4. 示例：在插入数据前自动设置时间戳

```sql
CREATE TRIGGER before_insert_orders
BEFORE INSERT ON orders
FOR EACH ROW
BEGIN
    SET NEW.created_at = NOW();
END;
```

## 5. 示例：在删除用户时同步删除相关订单

```sql
CREATE TRIGGER after_delete_users
AFTER DELETE ON users
FOR EACH ROW
BEGIN
    DELETE FROM orders WHERE user_id = OLD.id;
END;
```

## 6. 触发器中的 NEW 和 OLD

* **NEW**：表示插入或更新时的新数据行（BEFORE 和 AFTER INSERT/UPDATE 中使用）。
* **OLD**：表示删除或更新前的旧数据行（BEFORE 和 AFTER DELETE/UPDATE 中使用）。

---

触发器可以实现自动化的数据处理和业务规则，保障数据一致性和完整性。
