set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
ALTER TRIGGER [tri_PODetUpdate] ON [dbo].[STN_PODet]
FOR UPDATE
AS
begin
declare @pono varchar(30)--更新的请购单编号
declare @SourceNo varchar(20)--请购单编号
declare @SourceSerialNo int--请购单序号
declare @count int--更新后 请购单的已转购数量 declare @okCount int
declare @total int SELECT @pono = PONO,@SourceNo = SourceNo,@SourceSerialNo = SourceSerialNo from deleted
if @SourceSerialNo > 0 -- 说明更新的数据是从请购单转过来的
begin
select @count = SUM(qty) FROM STN_PODet
WHERE SourceNo = @SourceNo AND SourceSerialNo = @SourceSerialNo update STN_SubscribeDet set DeliveryQty = @count
WHERE SubscribeNo = @SourceNo AND serialNo = @SourceSerialNo
-------------------当请购单的字表所有 请购数量 = 已转购数量 ,那么该申请单 状态改为结案----------------------
--获取 请购数量 和 已转购数量相等的数据条数
select @okCount = COUNT(*) FROM STN_SubscribeDet
WHERE SubscribeNo = @SourceNo
AND Qty = DeliveryQty --获取所有数据条数
select @total = COUNT(*) FROM STN_SubscribeDet
WHERE SubscribeNo = @SourceNo if @total = @okCount
BEGIN
UPDATE STN_SubscribeHD SET Status = 9 WHERE SubscribeNo = @SourceNo
END
end
end最后一句语句貌似总是不执行··········
经过测试 当@total 等于 @okCount 的时候
UPDATE STN_SubscribeHD SET Status = 9 WHERE SubscribeNo = @SourceNo
这句还是不执行,为什么呢?
set QUOTED_IDENTIFIER ON
go
ALTER TRIGGER [tri_PODetUpdate] ON [dbo].[STN_PODet]
FOR UPDATE
AS
begin
declare @pono varchar(30)--更新的请购单编号
declare @SourceNo varchar(20)--请购单编号
declare @SourceSerialNo int--请购单序号
declare @count int--更新后 请购单的已转购数量 declare @okCount int
declare @total int SELECT @pono = PONO,@SourceNo = SourceNo,@SourceSerialNo = SourceSerialNo from deleted
if @SourceSerialNo > 0 -- 说明更新的数据是从请购单转过来的
begin
select @count = SUM(qty) FROM STN_PODet
WHERE SourceNo = @SourceNo AND SourceSerialNo = @SourceSerialNo update STN_SubscribeDet set DeliveryQty = @count
WHERE SubscribeNo = @SourceNo AND serialNo = @SourceSerialNo
-------------------当请购单的字表所有 请购数量 = 已转购数量 ,那么该申请单 状态改为结案----------------------
--获取 请购数量 和 已转购数量相等的数据条数
select @okCount = COUNT(*) FROM STN_SubscribeDet
WHERE SubscribeNo = @SourceNo
AND Qty = DeliveryQty --获取所有数据条数
select @total = COUNT(*) FROM STN_SubscribeDet
WHERE SubscribeNo = @SourceNo if @total = @okCount
BEGIN
UPDATE STN_SubscribeHD SET Status = 9 WHERE SubscribeNo = @SourceNo
END
end
end最后一句语句貌似总是不执行··········
经过测试 当@total 等于 @okCount 的时候
UPDATE STN_SubscribeHD SET Status = 9 WHERE SubscribeNo = @SourceNo
这句还是不执行,为什么呢?
http://blog.csdn.net/Haiwer/archive/2008/10/04/3016333.aspx