我有两表:a表,b表
a表字段:
包裹号,产品名,可用数
1       电视    2
1       面包     3
 
b表字段:
产品名,库存数,已锁定数,可用数
电视      5       2       3
面包      5        3       2
a表可用数,等于B表的已锁定数
b表的可用数等于b表的库存数-已锁定数。现在某包裹号取消,则a表某包裹号所有产品的可用数更新为0,b表的“已锁定数”等于以前“锁定数”-a表的“可用数”,b表的“可用数”等于以前“可用数”+a表的“可用数”。
更新后的数据为:
a表字段:
包裹号,产品名,可用数
1       电视    0
1       面包     0
 
b表字段:
产品名,库存数,已锁定数,可用数
电视      5       0       5
面包      5        0      5
谢谢大家了

解决方案 »

  1.   


    update b set 已锁定数=已锁定数-a.可用数, set 可用数= 可用数+a.可用数 from a where a.包裹号=? and a.产品名=b.产品名
    update a set 可用数=0 where 包裹号=?
      

  2.   

    楼上的大哥,有没有办法用一条SQL语句写呢?谢谢了
      

  3.   

    刚才语句多了个set,修改下update b set 已锁定数=已锁定数-a.可用数,可用数= 可用数+a.可用数 from a,b where a.包裹号=? and a.产品名=b.产品名
    update a set 可用数=0 where 包裹号=?
      

  4.   

    使用触发器吧
    create trigger t1
    on a
    for insert,update,delete
    as
    update t2
    set 已锁定数=t.可用数 ,t2.可用数=t2.库存数-t2.已锁定数
    from t2,inserted t
    where t2.产品名=t.产品名