发布网友 发布时间:2022-05-01 06:06
共2个回答
热心网友 时间:2022-05-02 15:22
触发器分为语句级触发器和行级触发器,区别就是,语句级触发器没有指定FOR EACH ROW,只在语句执行完毕后调用一次触发器,而不管这条语句影响到多少行;行级触发器指定了FOR EACH ROW,当一个DML语句操作影响到数据库中的多行数据时,对于其中的每一个数据行,行级触发器均会被触发一次。。。。给分吧追问1、比如说:前台页面需要导入100条数据(在后台处理的时候都是用insert语句一条一条insert的),我触发器中没有添加For each row语句,那我这个触发器是要被触发100次呢还是1次?我知道如果我触发器中有For each row语句块,触发器是要被触发100次的。追答1.按你说的,如果需要100条数据,每次insert 一条,将会触发100次。
2.生成的100个insert语句每执行一跳,调用一次。
如果向下面的情况:
1.一句insert 插入100条语句,如果是for each row,则触发100次,如果没有for each row ,则触发一次。是这么分的。
想你说的一句insert 插入一条数据,插100次,不管是行级还是语句级,表象上都是调用100次。
我突然觉得你这个思路不太适合大数据量的表,你想想还有没有其他的思路。
热心网友 时间:2022-05-02 16:40
你这个语法上可行,但是使用中是不可行的,对B_F_SX_COS_T1_TP的影响太大了,你可以换个思路,如果B_F_SX_COS_T1_H这个表的数据不需要实时的话,可以用job定时去处理,晚上干,B_F_SX_COS_T1_H的数据会延时一天,或者单行处理,不要整表处理。追问不行,不能隔日处理,因为往B_F_SX_COS_T1_H表中插入的是总行返还下来的流水数据,当日就要出日报的,所以这个是在前台页面做了一个Excel模式的导入功能供业务人员操作;追答那就不要用触发器了,都在前台用代码实现吧。