首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

求销售出货后直接冲减库存的触发器!解决方案

2012-03-05 
求销售出货后直接冲减库存的触发器!销售表:产品名称 出货数量 出货单价 库存单价A1020库存表产品名称 库存

求销售出货后直接冲减库存的触发器!
销售表:
产品名称 出货数量 出货单价 库存单价
A 10 20  
库存表
产品名称 库存数量 库存单价 库存金额
A 50 8 400

求一个触发器,能在销售出货时,自动获得当前的库存单价,并填写在销售出货表的库存单价中,
同时,冲减库存的数量。也就是达成下面的结果:

销售表:
产品名称 出货数量 出货单价 库存单价
A 10 20 8
库存表
产品名称 库存数量 库存单价 库存金额
A 40 8 320

[解决办法]

SQL code
怎么出售,是在出售后向销售表中插入一条记录吗?是的话create trigger test_insert on test.dbo.销售表for insertas    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
[解决办法]
use hell
go

create 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

热点排行