关于SQL SERVER 2008 R2触发器问题

Henry126 2012-12-20 11:22:45
两张表:A表两列:流水号(主键), 收款金额。B表两列:流水号(外键), 拆分金额。现在B表中加入一触发器,要求是当B表中插入、删除、更新后的结果满足 B表该流水号下的拆分金额之和小于A表中该流水单号下的收款金额。

若不采用触发器是否有其他更简单的方法?谢谢
...全文
219 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
昵称被占用了 2013-01-09
  • 打赏
  • 举报
回复
这个用触发器存在逻辑问题,如果一个10拆分成2和8是正常的,但是如果拆分的记录不同时提交入库,无论先提交哪一条都会判断拆分有问题,影响可操作性
Mr_Nice 2013-01-09
  • 打赏
  • 举报
回复
引用 5 楼 lizhen_127 的回复:
不用触发器的话,用哪种方式来搞比较好?
插入之前,提前判断(前台程序中)
Henry126 2013-01-09
  • 打赏
  • 举报
回复
不用触发器的话,用哪种方式来搞比较好?
-晴天 2012-12-22
  • 打赏
  • 举报
回复
create trigger inserttb on b INSTEAD OF INSERT as begin ;with c1 as( select 流水号,sum(拆分金额)as je from inserted group by 流水号 ),c2 as( select 流水号,sum(拆分金额)as je from B t where exists(select 1 from c1 where 流水号=t.流水号) ),c3 as( select a.流水号,a.je+b.je as je from c1 a inner join c2 b on a.流水号=b.流水号 ) insert into B(流水号,拆分金额) select i.* from inserted i inner join c3 c on i.流水号=c.流水号 where exists(select 1 from A where 流水号=i.流水号 and 金额<c.je) end
爱你99 2012-12-22
  • 打赏
  • 举报
回复
若程序是你自己开发的,那肯定不需要触发器,如果不是触发器就是很好的选择
黄_瓜 2012-12-20
  • 打赏
  • 举报
回复
操作之前先判断。 这是个很常见的判断,不需要触发器去搞。
yiyishuitian 2012-12-20
  • 打赏
  • 举报
回复
搞个事务在里面,数据增删之后,先看看符合要求不,不符合就回滚.

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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