用途:为 MariaDB 中行级触发器、事件调度器与视图提供确定性指导,适用于把副作用挂到 INSERT/UPDATE/DELETE、调度周期性 SQL 任务、构建带安全边界的可更新视图,或用“表+事件刷新”模拟物化视图。
主要能力与要点:触发器必须使用 FOR EACH ROW,MariaDB 无语句级触发器,批量 DML 会逐行触发,触发器体内禁止 COMMIT/ROLLBACK/SAVEPOINT/START TRANSACTION。事件依赖全局 event_scheduler,默认多为 OFF,需 SET GLOBAL event_scheduler = ON 并在 my.cnf 的 [mysqld] 持久化,可用 SHOW VARIABLES LIKE 'event_scheduler' 验证;复制场景用 DISABLE ON SLAVE 防止重复执行。视图需选对 ALGORITHM:UNDEFINED 默认、MERGE 可下推索引且可更新、TEMPTABLE 会物化并破坏索引下推。安全敏感对象应显式设置 DEFINER,需尊重调用者权限时用 SQL SECURITY INVOKER。多触发器需用 FOLLOWS/PRECEDES 显式排序。WITH CHECK OPTION 可拒绝视图谓词外的写入。
使用方式:资料给出审计触发器、SIGNAL 校验触发器、每日清理事件、MERGE 视图、快照+定时刷新模拟物化视图、FOLLOWS 排序等模式,并附决策树判断该用触发器、CHECK 约束、事件还是应用代码。
限制:MariaDB 无原生物化视图,MATERIALIZED VIEW 关键字不存在;优化器中的 MATERIALIZED 指派生表物化。单行无状态校验优先用 CHECK 约束或生成列。具体收费、平台与价格暂未提供。