首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

触发器中话语改判断方式

2013-12-11 
触发器中语句改判断方式我分析觉得是这个触发器的语句是肯定的方式,才存在这个问题,不知道是不是这样?[解

触发器中语句改判断方式


我分析觉得是这个触发器的语句是肯定的方式,才存在这个问题,不知道是不是这样?


[解决办法]
引用:
Quote: 引用:

这个我估计是因为内部的子查询,返回了多余1条记录,导致的,就算是先判断,估计后面更新时,也还会报错。

所以比如改为这样试试:


create trigger dbo.trigger_purtb_insert
on purtb
for insert
as
  
update purtb
set 备注 = isnull((select top 1 t1.订单单别+'-'+t1.订单单号
                   from mocta t1 
                   where (i.参考单别 = t1.工单单别 and i.参考单号 = t1.工单单号) 
                   or (i.参考单别 = t1.订单单别 and i.参考单号 = t1.订单单号)
                   order by t1.订单单别
                  ),
                  i.参考单别 +i.参考单号
                 )
from inserted i
where purtb.请购单号 = i.请购单号 and
      purtb.参考单号 = i.参考单号
            
  
go

我刚才试了一下,可以解决前面出现的问题,感觉在前台增加数据时,程序变得不稳定的感觉,有时界面像是一晃就过了,还要深入应用一下,看看还有没有别的问题,不过现在我想问一下,为什么简单增加一个排序,就会好


呵呵,其实就是只选择一行数据,因为子查询要返回数据,并且赋值,必须只有1行数据,否则就会报错

热点排行