SQL 学习笔记:触发器 TRIGGER(触发器)
一、触发器 语法
-- Oracle
CREATE TRIGGER trg BEFORE INSERT ON t
FOR EACH ROW BEGIN :NEW.col := ...; END;
-- MySQL
CREATE TRIGGER trg BEFORE INSERT ON t
FOR EACH ROW SET NEW.col = ...;二、参数说明
| 项目 | 说明 |
|---|---|
BEFORE/AFTER | 触发时机:操作前/后 |
INSERT/UPDATE/DELETE | 触发事件,可组合 |
FOR EACH ROW | 行级触发器,每行触发一次 |
NEW/OLD | :NEW(NEW.) 新值,:OLD(OLD.) 旧值(Oracle 用冒号) |
三、注意事项
- Oracle 行触发器用 :NEW / :OLD(带冒号);MySQL 用 NEW / OLD(无冒号)
- Oracle 可一个触发器挂多个事件(INSERT OR UPDATE OR DELETE)
- 触发器常用于审计、自动填充时间/ID,勿滥用以免难以调试
四、经典案例
案例1:自动填充时间(MySQL)
案例2:Oracle 审计触发器
案例3:阻止非法删除
五、小结
触发器 TRIGGER是数据库操作中的基础而关键的用法,建议结合文中的示例表在 Oracle 与 MySQL 中分别动手验证,注意两者在自增、分页、正则等处的语法差异,做到融会贯通。
评论(0)
请登录后发表评论。