帮忙看看 是不是判断的问题

辉百元 2018-12-26 05:33:12
alter trigger tr_test_update on PORequestEntry
for UPDATE
as
begin
begin transaction
DECLARE
@fqty decimal,
@FBatchAppendQty decimal
select @fqty=t1.fqty,@FBatchAppendQty=t2.FBatchAppendQty from PORequestEntry t1 ,t_ICItemPlan t2 where t1.FItemID=t2.FItemID
if not(@fqty%@FBatchAppendQty=0)
commit tran
else
rollback tran
print'不能小于最小包装量”一定要按包装量倍数下单!'
end
需求结果 不是倍数 提示信息 是倍数不提示
现在的结果是 都提示
...全文
129 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
吉普赛的歌 版主 2018-12-27
  • 打赏
  • 举报
回复
ALTER TRIGGER tr_test_update
ON PORequestEntry
AFTER UPDATE
AS
BEGIN
	BEGIN TRANSACTION
	DECLARE @fqty                DECIMAL,
	        @FBatchAppendQty     DECIMAL
	
	--你原来都没有用到 INSERTED, INSERTED 相当于 PORequestEntry 表在修改过程中产生的新记录虚表
	SELECT @fqty = t1.fqty,
	       @FBatchAppendQty = t2.FBatchAppendQty
	FROM   INSERTED      t1 INNER JOIN 
	       t_ICItemPlan       t2
	ON  t1.FItemID = t2.FItemID
	
	--不要用 NOT ,可读性不好
	--另外,不明白为什么要用这个 % 取余,是否小于最小包装量,不就是 
	--IF @fqty<@FBatchAppendQty 
	--就可以了吗?
	IF @fqty%@FBatchAppendQty != 0
	BEGIN
		COMMIT TRAN
	END
	ELSE
	BEGIN            --多语句必须加 BEGIN... END
		PRINT'不能小于最小包装量”一定要按包装量倍数下单!'
		ROLLBACK TRAN		
	END
END
tansx 2018-12-27
  • 打赏
  • 举报
回复
帮忙顶一下!
辉百元 2018-12-27
  • 打赏
  • 举报
回复
辉百元 2018-12-27
  • 打赏
  • 举报
回复

楼上的都试过了 还是老样子
辉百元 2018-12-27
  • 打赏
  • 举报
回复
如图还是一样
吉普赛的歌 版主 2018-12-26
  • 打赏
  • 举报
回复
ALTER TRIGGER tr_test_update
ON PORequestEntry
FOR UPDATE
AS
BEGIN
	BEGIN TRANSACTION
	DECLARE @fqty                DECIMAL,
	        @FBatchAppendQty     DECIMAL
	
	SELECT @fqty = t1.fqty,
	       @FBatchAppendQty = t2.FBatchAppendQty
	FROM   PORequestEntry     t1,
	       t_ICItemPlan       t2
	WHERE  t1.FItemID = t2.FItemID
	
	IF NOT(@fqty%@FBatchAppendQty = 0)
	    COMMIT TRAN
	ELSE
	BEGIN            --多语句必须加 BEGIN... END
		PRINT'不能小于最小包装量”一定要按包装量倍数下单!'
		ROLLBACK TRAN		
	END
END
二月十六 版主 2018-12-26
  • 打赏
  • 举报
回复
加一个begin end试试
ALTER TRIGGER tr_test_update
ON PORequestEntry
FOR UPDATE
AS
BEGIN
BEGIN TRANSACTION;
DECLARE @fqty DECIMAL,
@FBatchAppendQty DECIMAL;
SELECT @fqty = t1.fqty,
@FBatchAppendQty = t2.FBatchAppendQty
FROM PORequestEntry t1,
t_ICItemPlan t2
WHERE t1.FItemID = t2.FItemID;
IF NOT (@fqty % @FBatchAppendQty = 0)
COMMIT TRAN;
ELSE
BEGIN
ROLLBACK TRAN;
PRINT '不能小于最小包装量”一定要按包装量倍数下单!';
END;
END;

34,588

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧