销售表:
产品名称 出货数量 出货单价 库存单价
A         10       20        
库存表
产品名称 库存数量 库存单价 库存金额
A         50        8        400求一个触发器,能在销售出货时,自动获得当前的库存单价,并填写在销售出货表的库存单价中,
同时,冲减库存的数量。也就是达成下面的结果:销售表:
产品名称 出货数量 出货单价 库存单价
A         10       20        8
库存表
产品名称 库存数量 库存单价 库存金额
A         40        8        320

解决方案 »

  1.   


    怎么出售,是在出售后向销售表中插入一条记录吗?是的话create trigger test_insert 
    on test.dbo.销售表
    for insert
    as
    update A
    set A.库存单价=C.库存单价
    from 销售表 as A inner join inserted as B
    on A.产品名称=B.产品名称
    inner join 库存表 as C
    on A.产品名称=C.产品名称;

    update A
    set A.库存数量=A.库存数量-B.出货数量,
    A.库存金额=A.库存数量*A.库存单价
    from 库存表 as A inner join inserted as B
    on A.产品名称=B.产品名称
    go
      

  2.   

    use hell
    gocreate table table_stock
    (
        product_name nchar(20) not null,
        stock_amount int not null,
        stock_price int not null default 'null',
        [sum] as stock_amount*stock_price
        constraint Uni_table_stock unique (product_name,stock_price)
    )
    go
    create table table_sales
    (
       product_name nchar(20) not null,
       sales_amount int not null,
       sales_price  int not null,
       stock_price  int null,
       constraint FK_table_sales_stock_price foreign key (product_name,stock_price) references  table_stock(product_name,stock_price)
    )
    go
    create trigger tri_sales
    on table_sales
    after insert
    as 
    begin
      update  a  set [a].[stock_price]=[b].[stock_price]  from  table_sales as  a,table_stock as b
      where a.product_name=b.product_name
      update  b  set b.stock_amount-=a.sales_amount from table_sales as a,table_stock as b
      where a.product_name=b.product_name
      end
      go