为何U9不用触发器的原因

比如,想建立一个规则,当销售订单没有完工的生产订单时,不准批量拉取出货单。

在数据库里写存储过程如下:

Alter TRIGGER tri_SM_ShipLine_Insert

ON SM_ShipLine

AFTER INSERT

AS

BEGIN

Declare @ID BigInt

SELECT @ID =SrcDocKey FROM Inserted

If Not Exists (

Select * From SM_ShipLine SSL

Left Outer Join MO_MO MO

On SSL.SrcDocKey=MO.SrcDoc_SrcDoc_EntityID

Where Mo.DocState=3

And MO.SrcDoc_SrcDoc_EntityID=@ID

)

Begin

Declare @Tips VarChar(500)

Set @Tips='该销售订单尚未有完工的生产订单,所以暂时还不能拉单出货!'

RAISERROR(@Tips, 16, 1)

RollBack Transaction

End

END

GO

如果是在“出货单批量生单”界面的列表里,只选取单行,那么是肯定能控制得住的。如果是本行与其它的客户销售行一起选择,也能控制得住。但是如果是本行与本行所属客户的销售行一起选择呢?那就控制不住了。它会把该客户的所有尚未有出货单的销售行都做成出货单,压根不管是否有触发器。

试举例说明吧!

有ABCD四条销售记录尚未拉取出货单。其中ABC属于客户甲,D属于客户乙。

“出货单批量生单”列表操作和结果如下:

只选A,红色惊叹号报错,有触发器里设计好的提示文本出现,不会生单

只选AD,红色惊叹号报错,有触发器里设计好的提示文本出现,一张单都不会生成

ABCD全选,没有红色惊叹号,建立了两张出货单,其中第一张为ABC,第二张为D。没有实现需求啊,怪不得要二次开发呢~~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值