读书人

触发器中话语改判断方式

发布时间: 2013-12-11 16:44:13 作者: rapoo

触发器中语句改判断方式


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


[解决办法]
引用:
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行数据,否则就会报错

读书人网 >SQL Server

热点推荐