乐闻世界logo
搜索文章和话题

SQLite 的触发器(Trigger)如何使用?

2月18日 21:51

SQLite 的触发器(Trigger)机制允许在特定数据库事件发生时自动执行操作:

  1. 触发器类型

    • BEFORE 触发器:在操作执行前触发
    • AFTER 触发器:在操作执行后触发
    • INSTEAD OF 触发器:替代原始操作执行(主要用于视图)
  2. 触发事件

    • INSERT:插入数据时触发
    • UPDATE:更新数据时触发
    • DELETE:删除数据时触发
  3. 创建触发器

    sql
    -- BEFORE INSERT 触发器 CREATE TRIGGER update_timestamp BEFORE INSERT ON users FOR EACH ROW BEGIN SET NEW.created_at = CURRENT_TIMESTAMP; END; -- AFTER UPDATE 触发器 CREATE TRIGGER log_update AFTER UPDATE ON users FOR EACH ROW BEGIN INSERT INTO audit_log (table_name, operation, user_id) VALUES ('users', 'UPDATE', NEW.id); END;
  4. 触发器中的特殊引用

    • NEW.column:引用 INSERT 或 UPDATE 操作后的新值
    • OLD.column:引用 UPDATE 或 DELETE 操作前的旧值
    • NEW 只在 INSERT 和 UPDATE 中可用
    • OLD 只在 UPDATE 和 DELETE 中可用
  5. 触发器应用场景

    • 自动维护时间戳字段
    • 实现审计日志
    • 数据验证和约束
    • 级联操作
    • 数据同步
  6. 管理触发器

    sql
    -- 查看触发器 SELECT * FROM sqlite_master WHERE type = 'trigger'; -- 删除触发器 DROP TRIGGER trigger_name; -- 列出表的触发器 PRAGMA trigger_list(table_name);
  7. 限制和注意事项

    • 触发器不能直接调用其他触发器(递归)
    • 触发器执行会影响性能
    • 复杂的触发器逻辑难以调试
    • 避免在触发器中执行耗时操作

触发器是 SQLite 实现自动化数据维护和业务逻辑的重要工具。

标签:Sqlite