| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1465 人关注过本帖
标题:关于触发器的问题
只看楼主 加入收藏
zhaoyang1008
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:30
专家分:110
注 册:2010-9-15
收藏
得分:6 
不把inserted里面的字段富裕变量@name等,直接通过inserted. medician_name 引用试试
2010-10-12 22:04
上帝之允
Rank: 1
等 级:新手上路
帖 子:67
专家分:5
注 册:2010-10-11
收藏
得分:0 
我再试试,但是怎么显示无法绑定由多个部分组成的标识符 "medician.number"。
2010-10-12 22:20
gameohyes
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:湖南
等 级:版主
威 望:53
帖 子:1275
专家分:3629
注 册:2009-3-5
收藏
得分:0 
回复 9楼 上帝之允
那个的话,是触发器引起的.
改变下顺序应该就可以了.
程序代码:
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);
insert into 入库清单  values('感冒冲剂','500g',300,'','15.0','4500',getdate(),'刘金宝','李金宝','汤唯','','')

C#超级群 74862681,欢迎大家的到来!
2010-10-12 22:24
上帝之允
Rank: 1
等 级:新手上路
帖 子:67
专家分:5
注 册:2010-10-11
收藏
得分:0 
是将插入的顺序修改一下吗?? 但是是因为触发器的问题,无法同时插入吗
2010-10-12 22:30
gameohyes
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:湖南
等 级:版主
威 望:53
帖 子:1275
专家分:3629
注 册:2009-3-5
收藏
得分:0 
这样可以不
程序代码:
if object_id('Trigger1','TR')is not null
drop Trigger Trigger1;
go
create trigger Trigger1 on 入库清单
for 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
update 药库 set medician_store=medician_store+(select medician_number from inserted),
                修改日期=getdate()        
where medician_name =(select medician_name from inserted )
end
go

C#超级群 74862681,欢迎大家的到来!
2010-10-12 22:33
上帝之允
Rank: 1
等 级:新手上路
帖 子:67
专家分:5
注 册:2010-10-11
收藏
得分:0 
我先开始的初衷用insert不用update是为了,我想查某月某日的库存余量,可是改成update的话,我想不出来怎么做了
2010-10-12 22:41
gameohyes
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:湖南
等 级:版主
威 望:53
帖 子:1275
专家分:3629
注 册:2009-3-5
收藏
得分:0 
那就这样吧:
程序代码:
if object_id('Trigger1','TR')is not null
drop Trigger Trigger1;
go
create trigger Trigger1 on 入库清单
for 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 medician_name,medician_number,date from inserted
end
go

C#超级群 74862681,欢迎大家的到来!
2010-10-12 22:57
上帝之允
Rank: 1
等 级:新手上路
帖 子:67
专家分:5
注 册:2010-10-11
收藏
得分:0 
可是这样修改的触发器是将入库清单的数据照搬入药库呀,这样药库就没有意义了,没有办法显示库存了
2010-10-12 23:01
gameohyes
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:湖南
等 级:版主
威 望:53
帖 子:1275
专家分:3629
注 册:2009-3-5
收藏
得分:0 
程序代码:
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 修改日期 = (select top 1 修改日期 from 药库 where medician_name=@name order by 修改日期 desc)
end
go

引用:
我用这句话替换了先前的最后一句,有些改善,可是还是不行,我想问的是这句话可不可以
完成条件是指定药品离现在最近的一条记录

想达到什么样的目的?

C#超级群 74862681,欢迎大家的到来!
2010-10-12 23:23
png
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:4
帖 子:126
专家分:880
注 册:2010-10-6
收藏
得分:6 
"where 修改日期 = (select top 1 修改日期 from 药库 where medician_name=@name order by
修改日期 desc) 我用这句话替换了先前的最后一句,

有些改善,可是还是不行,  -- 应该可以了.  -- 什么是有些改善,还是不行?


我想问的是这句话可不可以完成条件是指定药品离现在最近的一条记录 -- 可以.


2010-10-13 02:38
快速回复:关于触发器的问题
数据加载中...
 
   



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

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