日期:2014-05-18  浏览次数:20622 次

有两张表,进货销售表和库存表,怎样才能在进货销售表中插入数据,库存表可自动得出该商品的进货数量,进货退货数量,销售数量,销售退货数量
有两张表,进货销售表和库存表,怎样才能在进货销售表中插入数据,库存表可自动得出该商品的进货数量,进货退货数量,销售数量,销售退货数量以及得出库存数量
stock表字段如下:
商品名称 varchar(50)
供应商 varchar(50)
数量 int
单价 money
信息类型 varchar(50) //记录是进货信息,进货退货信息,销售信息,销售退货信息

Total表字段如下:
商品名称 varchar(50)
供应商 varchar(50)
进货数量 int
进货退货数量 int
销售数量 int
销售退货数量 int
库存数量 int

------解决方案--------------------
不管你的Stock表是什么文
Productname不应该是主键

还有我始终不明白
SELECT @type1='进货信息' FROM inserted
SELECT @type2='进货退货信息' FROM inserted
SELECT @type3='销售信息' FROM inserted
SELECT @type4='销售退货信息' FROM inserted

这几句有什么用
要写直接
 set @type1='进货信息' 就行

------解决方案--------------------
SQL code
create trigger alter_table on table stock
for insert
as 
declare @productname varchar(50)
declare @Companyname varchar(50)
declare @number int 
declare @type varchar(50)
declare @sql varchar(4000)
declare c_cur cursor
for select productname,Companyname,Number,Type from inserted
open c_cur
fetch next from c_cur into @productname,@Companyname,@number,@type
while @@fetch_status=0 
begin
    if not exists( select * from Total where productname=@productname and Companyname=@Companyname)
    begin
       insert into Total(productname,Companyname) values(@productname,@Companyname)
    end 
    update Total 
    set Stocknumber=(case when @type='进货信息' then @number else 0 end),
    set Stock_back=(case when @type='进货退货信息' then @number else 0 end),
    set Sellnumber=(case when @type='销售信息' then @number else 0 end),
    set Sell_back=(case when @type='销售退货信息' then @number else 0 end) 
    where productname=@productname and Companyname=@Companyname)
fetch next from c_cur into @productname,@Companyname,@number,@type
end
close c_cur
deallocate c_cur