| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1465 人关注过本帖
标题:关于触发器的问题
取消只看楼主 加入收藏
上帝之允
Rank: 1
等 级:新手上路
帖 子:67
专家分:5
注 册:2010-10-11
结帖率:73.68%
收藏
已结贴  问题点数:20 回复次数:12 
关于触发器的问题
我刚自学了触发器,想做一个药的数据库
目的是向入库清单中插入数据的时候,希望药库也相应改变
可是只能改变第一次插入入库清单时的药品,不知道为什么,请指教
if object_id('Trigger1','TR')is not null
drop Trigger Trigger1;
go
create trigger Trigger1 on 入库清单
after insert
as
declare @number int,@name varchar(15);
select @number=medician_number,@name=medician_name from inserted
if(@name not in(select medician_name from 药库))
begin
insert into 药库(medician_name,medician_store,修改日期)
select @name,@number,date
from inserted
end
else
begin
insert into 药库
select @name,@number+medician_store,date
from inserted,药库
where @name=药库.medician_name and 修改日期=(select top 1
修改日期 from 药库 order by 修改日期 desc)
end
go
搜索更多相关主题的帖子: 触发器 
2010-10-11 21:58
上帝之允
Rank: 1
等 级:新手上路
帖 子:67
专家分:5
注 册:2010-10-11
收藏
得分:0 
好像还是不行,我不明白为什么每次药库里改变的都是第一次输入入库清单里的药品
我的药库,没有主键,是记录每次药品的增长之后的库存的。
2010-10-11 23:17
上帝之允
Rank: 1
等 级:新手上路
帖 子:67
专家分:5
注 册:2010-10-11
收藏
得分:0 
where 修改日期 = (select top 1 修改日期 from 药库 where medician_name=@name order by
修改日期 desc) 我用这句话替换了先前的最后一句,有些改善,可是还是不行,我想问的是这句话可不可以
完成条件是指定药品离现在最近的一条记录
2010-10-12 12:46
上帝之允
Rank: 1
等 级:新手上路
帖 子:67
专家分:5
注 册:2010-10-11
收藏
得分:0 
我希望的是插入,不想跟新,可是插入的话一直实现不了
2010-10-12 13:04
上帝之允
Rank: 1
等 级:新手上路
帖 子:67
专家分:5
注 册:2010-10-11
收藏
得分:0 
create table 药库
(
   medician_name varchar(20),
   medician_store int check(medician_store>0),
   修改日期 datetime default getdate()
)
create table 入库清单
(
  medician_name varchar(20),
  medician_norms varchar(20),
  medician_number int,
  medician_unit char(10) default '盒',
  medician_unitprice money,
  medician_totalmoney money,
  date datetime default getdate(),
  businessman char(10),
  P_incharge char(10),
  accountant char(10),
  Y_person char(10),
  J_person char(10)
)

insert into 入库清单  values('感冒冲剂','500g',300,'盒','15.0','4500',getdate(),'刘金宝','李金宝','汤唯','周','蔡')
insert into 药库(medician_name,medician_store)output inserted.* values('感冒冲剂',1000);
insert into 药库 (medician_name,medician_store)output inserted.* values('阿司匹林',500);
insert into 药库 (medician_name,medician_store)output inserted.* values('斯达舒',1500);
insert into 药库(medician_name,medician_store) output inserted.* values('整肠生',1200);
2010-10-12 13:09
上帝之允
Rank: 1
等 级:新手上路
帖 子:67
专家分:5
注 册:2010-10-11
收藏
得分:0 
又使了一下,发现当我将药库中的四项第一次全部同时输入的时候,就会出现插入入库清单的时候,无法成功插入药库中,出现无法选择指定药品离插入时间最近记录
2010-10-12 16:05
上帝之允
Rank: 1
等 级:新手上路
帖 子:67
专家分:5
注 册:2010-10-11
收藏
得分:0 
还有个问题,我想实现插入入库清单,随之药库的数据也随之改变的功能除了触发器,别的可以吗
2010-10-12 20:28
上帝之允
Rank: 1
等 级:新手上路
帖 子:67
专家分:5
注 册:2010-10-11
收藏
得分:0 
我再试试,但是怎么显示无法绑定由多个部分组成的标识符 "medician.number"。
2010-10-12 22:20
上帝之允
Rank: 1
等 级:新手上路
帖 子:67
专家分:5
注 册:2010-10-11
收藏
得分:0 
是将插入的顺序修改一下吗?? 但是是因为触发器的问题,无法同时插入吗
2010-10-12 22:30
上帝之允
Rank: 1
等 级:新手上路
帖 子:67
专家分:5
注 册:2010-10-11
收藏
得分:0 
我先开始的初衷用insert不用update是为了,我想查某月某日的库存余量,可是改成update的话,我想不出来怎么做了
2010-10-12 22:41
快速回复:关于触发器的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.025496 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved