前言
在一些特定情况下,不需要经过人为确认,自动对特定表添加操作,使用sql触发器将极大地简化业务流程配置。在无代码平台中可代替逻辑配置,实现业务的正常运行。
一、触发器是什么?
触发器可看做是一种“特殊”的存储过程,它定义了一些在数据库相关事件如(DML和DDL操作)发生时应执行的“功能代码模块”,通常用于管理复杂的完整性约束,或监控对表的修改,或通知其他程序,甚至可以实现对数据的审计功能。
二、实例
现在有两张表,计划表和任务表。计划表通过用户选择开始日期和结束日期以及执行周期和次数,系统将生成多行任务数据。并满足计划名称-n的命名规范。
1.设计触发器
代码如下(示例):
#实现1对多新增的行级触发器
#根据计划表的task_num字段往任务表中添加相应数量的数据
create trigger tri_plan_mask
after update
on t_plan
for each row
begin
declare num int;
declare t_num int;
if new.task_num is not null and new.start_date is not null then
set num = 0;
set t_num = new.task_num;
while num < t_num do
insert into task_management(task_name,data_id,provisional_date)
values ((select concat(new.plan_name,'-',num)),uuid(),new.provisional_date);
set num = num + 1;
end while;
end if;
end tri_plan_mask;
2.插入数据及结果
如下(示例):
例如计划表中发动机维护计划先让用户填写填写完数据,得到task_num的值。根据命名规范生成发动机维护-n的任务名。
结果如下:
总结
触发器容易占用过多资源,使用时候需要考虑执行效率。