| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 546 人关注过本帖
标题:[求助]请教一个触发器的问题!
只看楼主 加入收藏
tjztjz
Rank: 1
等 级:新手上路
帖 子:30
专家分:0
注 册:2005-11-8
收藏
 问题点数:0 回复次数:3 
[求助]请教一个触发器的问题!
为表“OrderDetails”建立一个触发器,要求表“OrderDetails”订单数量确定后,必须修正Products表中的“库存量”,即现有库存量=原有库存量-订单中的数量, 并以“cfq2”为名保存
一开始做的是这样的:
create trigger cfq2 on dbo.OrderDetails
for insert,update
as
declare @num1 int, @num2 int, @id char(10)
select @num1=数量, @id=产品编号 from [inserted]
if exists(select * from [deleted])
begin
select @num2=数量 from [deleted]
set @num1=@num1-@num2
end
update dbo.Products
set 库存量=库存量-@num1
where 产品编号 = @id
go


但后来考虑到如果删除原有定单的话也应该修改Products表中的“库存量”,即现有库存量=原有库存量+订单中的数量 ,就又做了个删除触发器 :
create trigger cfq2 on dbo.OrderDetails
for delete
as
declare @num1 int
if exists(select 数量 from [deleted])
begin
select @num1=数量 from [deleted]
update Products
set 库存量=库存量 + num1
where Products.产品编号 in (select 产品编号 from [deleted])
end
go

现在的问题是想把这两个结合到一个触发器,应该怎样做呢?
希望知道的人帮忙指点一下!
先谢谢了!!!
搜索更多相关主题的帖子: 触发器 
2006-11-08 19:54
tjztjz
Rank: 1
等 级:新手上路
帖 子:30
专家分:0
注 册:2005-11-8
收藏
得分:0 
终于解决了!!!

create trigger cfq2 on dbo.OrderDetails
for insert ,update,delete
as
declare @num1 int, @num2 int, @id char(10)
if exists(select 数量 from [deleted]) and not exists (select 数量 from [inserted])
begin
select @num1=数量 from [deleted]
update Products
set 库存量=库存量+@num1
where Products.产品编号 in (select 产品编号 from [deleted])
end
else
begin
select @num1=数量, @id=产品编号 from [inserted]
if exists(select * from [deleted])
begin
select @num2=数量 from [deleted]
set @num1=@num1-@num2
end
update dbo.Products
set 库存量=库存量-@num1
where 产品编号=@id
end
go

2006-11-11 22:02
tjztjz
Rank: 1
等 级:新手上路
帖 子:30
专家分:0
注 册:2005-11-8
收藏
得分:0 
但好像麻烦了,希望高手优化一下,先谢谢了!!!
2006-11-11 22:03
LouisXIV
Rank: 6Rank: 6
等 级:贵宾
威 望:25
帖 子:789
专家分:0
注 册:2006-1-5
收藏
得分:0 

分开效率更高 没有必要合并


2006-11-12 00:01
快速回复:[求助]请教一个触发器的问题!
数据加载中...
 
   



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

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