如果:
A表:字段a1值为100,字段a2值为10
B表:字段b1也为100,字段b2值为5
那么B表这条记录就删掉,A表字段a2值就变为5。
问题:
A表:字段a1值为100,字段a2值为10
B表:字段b1也为100,字段b2值为5
字段b11也为100,字段b22值为6
如果B表出现两条值,怎么样才能实现A表这条数据删除,b22最后数据为1呢?
是不是A表中先做一次减法运算,所得的值(也就是新得到的A表)在和B表中的下一条数据在进行运算?好像有点麻烦!
过程用代码我已实现了,逻辑基本是用一个表的数据去查另一个表的数据,如果A表增加一条数据与B表N条数据对应,然后a2字段逐个减b2所有数据,当为负或零时停止,再算出最后余值写入A表或B表,但这样貌似容易出现脏数据- -把整个运算事件写到数据库里是不是就不会有脏数据了呢?
没看懂。哈哈
当其中一个表增加一个值时去比对另一个表,前面字段相同,就用后面字段相减,字段值大的一方保留并更新余值,值小的一方删除。
你的问题描述的不太清楚呢。
如果,A.Id==B.Id,那么,A.Val>B.Val,则 A.Val=A.Val-B.Val,否则 B.Val=B.Val-A.Val,并删除小值记录,对吧?如果 A.Val==B.Val 呢?
问题:如何实现,A.Id==B.Id 的情况下,如果,A.Val<SUM(B.Val),则 B(MAX).Val=SUM(B.Val)-A.Val,这样?
在删除的a中数据的时候写个触发器,去修改b表的数据。