日期:2014-05-17  浏览次数:20534 次

业务比较复杂的update语句,求解决方案???
T_a:
Id T_b_id 税率(下拉列表)

T_b:
Id 进货单价 税后单价 差价




现在是一个页面上画出两张表格,分别读取T_a、T_b的数据。
业务要求:当税率(下拉列表)改变时,需要改变“税后单价”同时需要改变“差价”,现在我只完成了修改“税后单价”的功能,做法是通过T_b_id找到T_b对应记录,修改。

由于差价的修改比较复杂(T_b表中省略了很多字段),所以来请教一下。需要通过T_b中的字段“a”和字段“b”的值来比较,然后再做相应操作。请问这种情况下一般怎么做???

说明:第一个要修改的值一条sql语句就可以了,第二个需要做判断,并且需要根据第一条执行后的值来计算。


------解决方案--------------------
建立一个存储过程, 输入变量为 @ID, @税率

然后先
update 表格
set 税率 = @税率
where ID = @ID

然后再update 表格
set 差价 = 你的计算过程
where ID = @ID
AND 你的判断条件 --判断在where中进行,比如字段“a”和字段“b”的值来比较
------解决方案--------------------
需要通过T_b中的字段“a”和字段“b”的值来比较,然后再做相应操作。请问这种情况下一般怎么做???

这个不清除你具体的表结构
不过一般这种判断,条件不多用if ... begin ...end 

或者用case when ... then ... else ... end 


------解决方案--------------------
这个你用触发器不就可以咯
------解决方案--------------------
探讨

引用:

这个你用触发器不就可以咯


触发器好像不合适吧,应该T_a中的多列变更都会导致T_b的变更。。。


还有一个问题,存储过程里面可以用事物吗?

------解决方案--------------------
存储过程中使用事务实例

请点击:http://www.cnblogs.com/RascallySnake/archive/2010/05/17/1737298.html
------解决方案--------------------
级联处理在小数据量的时候用触发器会比较好,大数据量的时候使用外键等也合适。