请问如何在触发器里获得当前被修改的记录某个字段的值

时间:2022-06-12 14:26:55
例如:表A
salebill_id    job_date    job_man
001            2005-06-02   aa
003            2005-06-02   bb
004            2005-06-03   aa

表B
salebill_id   goods_id  stock_num     out_id
001           A002       10            0078
001           A015       5             NULL
003           A101       100           0085
004           A520       200           NULL

out_id对应表C里的out_id,当表B插入新记录时,程序会自动从表C里获取out_id,但因为程序设计问题有时表B无法正常获取out_id的值,这样无法正常进入下一操作,

我想能不能在表A增加一个触发器,当表A插入一个新记录时,触发,并等到表B所有记录插入完毕后,再执行对新插入表B的记录进行判断out_id是否为空,如果是则从表C进行手动取值(!!只对新插入的那些记录进入操作!!)

9 个解决方案

#1


没明白啥意思
“但因为程序设计问题有时表B无法正常获取out_id的值,这样无法正常进入下一操作”
这句啥意思?
绕了半天就是想找B中的out_id是否为空,何不直接在b的触发事件里判断呢?

#2


使用 COLUMNS_UPDATED()函数

#3


好像不行 吧。

#4


触发器放到b表,检测当inserted里out_id为空的话,就从c表取值

可以实现

#5


触发器不要用的太多
不然 客户骂,经理也骂

#6


TO netmin(网min)
 这也是没办法的,因为我不是程序员,这个问题老出现,每次都要用手动去修改,咨询程序员,他说程序没有问题,是数据库的数据有问题,没办法


TO mind5(e网流星)
 的确是为了查找表Bout_id是否为空,并从表C找到对应值赋给他。我也想过在表B里添加一个触发器,但在表B里插入数据实在有点多,如果在表B里设置触发,恐怕要出问题的。

#7


TO netmin(网min) 

  我就是知道如何只对那条新插入的数据进行触发操作(因为旧的记录的不用再处理)

#8


inserted  表里的数据就是新插入的

#9


create  trigger **
on table
for update as
if update (column)
begin
*****
end

#1


没明白啥意思
“但因为程序设计问题有时表B无法正常获取out_id的值,这样无法正常进入下一操作”
这句啥意思?
绕了半天就是想找B中的out_id是否为空,何不直接在b的触发事件里判断呢?

#2


使用 COLUMNS_UPDATED()函数

#3


好像不行 吧。

#4


触发器放到b表,检测当inserted里out_id为空的话,就从c表取值

可以实现

#5


触发器不要用的太多
不然 客户骂,经理也骂

#6


TO netmin(网min)
 这也是没办法的,因为我不是程序员,这个问题老出现,每次都要用手动去修改,咨询程序员,他说程序没有问题,是数据库的数据有问题,没办法


TO mind5(e网流星)
 的确是为了查找表Bout_id是否为空,并从表C找到对应值赋给他。我也想过在表B里添加一个触发器,但在表B里插入数据实在有点多,如果在表B里设置触发,恐怕要出问题的。

#7


TO netmin(网min) 

  我就是知道如何只对那条新插入的数据进行触发操作(因为旧的记录的不用再处理)

#8


inserted  表里的数据就是新插入的

#9


create  trigger **
on table
for update as
if update (column)
begin
*****
end