跳转到主要内容
模块 12 · 第 4 课(共 4)课程中的48/57~12 min
模块课程(4/4)

实际触发和审核

现在我们已经学会了如何锻造智能子弹(扳机功能),我们需要将它们安装在真正的 Primed 武器上等待事件:这里是真正的扳机! 触发器正式附加先前创建的函数,并指示它在给定表上的特定 CRUD 事件“之前”或“之后”触发。

有很多选择;例如 FOR EACH ROW 对每个受影响的行触发一次,因此如果批量查询是超过 500 万行的全局更新,它将触发 500 万次微执行 - 请小心!

SQL
CREATE TRIGGER sync_inventory_trigger
-- Event options
AFTER INSERT OR UPDATE ON order_items
-- Modus operandi (singular or global macro-block FOR EACH STATEMENT)
FOR EACH ROW
-- Run the forged action
EXECUTE FUNCTION update_stock();

该触发器对 JavaScript 是不可见的,并且将严格根据安全提交给引擎的更新自动保持库存完全一致。

自动化 Updated_At

有一个长期存在的业务问题,即我们忘记在 JS 更新模型中传递 { updated_at: new Date() } 。触发器函数 set_updated_at 与 BEFORE UPDATE 触发器相结合消除了这种麻烦,自动更新每条记录更改。

自己尝试一下

锻炼#sql.m12.l4.e1
尝试:0加载中...

创建名为“trg_force_uppercase”的触发器。\n将其附加到“customers”表的“BEFORE INSERT”阶段。\n强制逐行计算“FOR EACH ROW”并调用“force_uppercase_name()”函数的执行。\n注意:还要在代码顶部重新创建 UDF“force_uppercase_name”(因为环境是隔离的),然后附加触发器声明。

正在加载编辑器...
显示提示

文本语法:首先创建函数,然后添加 CREATE TRIGGER trg_force_uppercase BEFORE INSERT ONcustomers FOR EACH ROW EXECUTE FUNCTION force_uppercase_name();

3 次尝试后可用的解决方案

锻炼#sql.m12.l4.e2
尝试:0加载中...

杀死传感器!有时我们希望推送原始种子文件或临时本机更改,绕过嘈杂的审核。\n删除触发器非常简单(您不删除有机功能,只删除传感器绑定)。\n使用“DROP TRIGGER”关键字,指定名称和全局附件。

正在加载编辑器...
显示提示

记得注明出处。 DROP TRIGGER trg_force_uppercase ON 客户;

3 次尝试后可用的解决方案