表:库存med_kucun(药品编号medid,单价price,数量medsum)
入库单med_insheet (入库单号insheetid,入库标志flag(0为暂存,1为入库)......)
入库单明细(入库单号insheetid,药品编号medid,单价price,数量number......)想法,1、库存表在入库单flag变为1时对库存进行增加。
2、未在药品基础信息表增加时建立为0库存,想在入库时直接建立库存。
3、根据入库单明细的药品编号与单价来判断,如果有相同编号与单价则为增加,如果无均相同的则新增。
请问有什么思路,如果用触发器该怎么写?
入库单med_insheet (入库单号insheetid,入库标志flag(0为暂存,1为入库)......)
入库单明细(入库单号insheetid,药品编号medid,单价price,数量number......)想法,1、库存表在入库单flag变为1时对库存进行增加。
2、未在药品基础信息表增加时建立为0库存,想在入库时直接建立库存。
3、根据入库单明细的药品编号与单价来判断,如果有相同编号与单价则为增加,如果无均相同的则新增。
请问有什么思路,如果用触发器该怎么写?
解决方案 »
- 求最小的数值,请前辈帮写个sql语句,先感谢前辈了!
- SqlServer的外连接问题(查询中包含不允许的外联接请求)
- 【求SQL语句】如何实现列横排,详见内,谢谢哥哥相助
- 问个问题,解答的给高分,做一条选择的SQL语句。
- 这个同步怎么做???有一定难度!!!!!!
- 关于连接sql server2k的问题,谢谢
- 请问,D6中我如何判断一台机器装没装SQL SERVER?谢谢
- 难题高分请教高手:关于数据库中分类的显示问题!!!!分不够可以再加!!来者有分,解决者100分相送!!!!!!!
- db2 与sql server
- 兄弟们帮个忙,怎么实现两个不同的数据库之间的数据转移
- 全文搜索与词库??
- SQL语句插入 smallint 类型的数据
after update
as
begin
set nocount on
if not update(flag) return
declare @flag char(01) declare @insheetid varchar(10) declare @price decimal(18,4)
declare @number decimal(18,4) declare @medid varchar(10)
select @flag = flag , @insheetid = insheetid from inserted
if @flag <> '1' return
select @price = price , @number = number , @medid = medid from 入库单明细 where insheetid = @insheetid
if exists(slect 1 from med_kucun where medid = @medid and price = @price)
update medsum = medsum + @number where medid = @medid and price = @price
else
insert into med_kucun (medid , price , medsum ......) values (@medid , @price , @number)
set nocount off
endGO
1、因为一直说用触发器不是太好,因此想能不能有别的方法。
2、触发器对应的deleted,inserted是个表集,select @price = price 。这种方式可行?不需要用游标即可吗?一直没敢用变量赋值,想着用sql语句表对表操作。能不能解说一下这种方式的工作原理。
根本不需要入库单的flag变为1时,就对库存进行增加,直接用sql语句进行统计库存不就行了,没必要写入库存表里。如果真的做对库存增加,也不能用触发器,在审核单据的时候直接写入库存就行了。
2楼的方法我试了只能更新一条数据。
我这样写的
update medkucun set medsum=medsum+c.number from (select a.medid,a.price,a.number from insheet_detail a ,inserted b where a.insheetid=b.insheetid and b.flag=1) c where medkucun.medid=c.medid and medkucun.price = c.priceinsert into medkucun select a.medid,a.price,a.number from insheet_detail a ,inserted b where a.insheedid=b.insheetid and b.flag=1 and a.medid+convert(char(50),a.price) not in (select b.medid+convert(char(50),b.price) from inserted)
库存能按要求进行入库改变,但是PB运行后报row retrieve与update错误,不知什么原因。