帮我看看这个触发器是否有问题呀?

dm1cyg 2007-12-21 05:00:54
库存里有商品编码、数量等字段

目的是,如果插入到销售表的记录和库存表里的编号相同就从库存里减少库存
CREATE TRIGGER xshj ON dbo.门诊销售表
FOR INSERT
/*
write by cyg
2007-4-15
处理划价销售部分


*/
AS
begin tran
if exists(select * from inserted a , 库存表 b where (a.商品编码=b.商品编码))
begin
update 库存表 set 数量=b.数量-a.数量 from 库存表 b join inserted a on ( b.商品编码=a.商品编码)
end

commit tran

...全文
95 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
w2jc 2007-12-22
  • 打赏
  • 举报
回复
要是用游标杂处理呀
------------------------------
能不用游标就最好不要用,
游标是对一个记录操作,SQL是对一组记录操作,
一定是后者快。
wzy_love_sly 2007-12-21
  • 打赏
  • 举报
回复
是,你键触发器就是执行更新库存
dm1cyg 2007-12-21
  • 打赏
  • 举报
回复
这个是不是只要插入到销售表里库存就肯定能减少呀
wzy_love_sly 2007-12-21
  • 打赏
  • 举报
回复
游标和这一样,还不如这个
JL99000 2007-12-21
  • 打赏
  • 举报
回复
没有问题的
看看是不是业务逻辑上有问题
dawugui 2007-12-21
  • 打赏
  • 举报
回复
括号要与不要都没有问题.
dm1cyg 2007-12-21
  • 打赏
  • 举报
回复
要是用游标杂处理呀
dawugui 2007-12-21
  • 打赏
  • 举报
回复
没看出什么地方错了?

难道有其他的条件?
areswang 2007-12-21
  • 打赏
  • 举报
回复
where (a.商品编码=b.商品编码)
on ( b.商品编码=a.商品编码)
---------------------------------
不用括号
wzy_love_sly 2007-12-21
  • 打赏
  • 举报
回复
CREATE   TRIGGER   xshj   ON   dbo.门诊销售表  
FOR INSERT

AS
begin tran
if exists(select 1 from inserted a , 库存表 b where a.商品编码=b.商品编码)
begin
update 库存表 set 数量=b.数量-a.数量 from 库存表 b join inserted a on b.商品编码=a.商品编码
end

commit tran


create table 门诊销售表 (商品编码 int,商品名称 varchar(20),数量 int)


create table 库存表 (商品编码 int,商品名称 varchar(20),数量 int)

insert into 库存表 select 1,'电脑',14
insert into 库存表 select 2,'机箱',20
insert into 库存表 select 3,'硬盘',10
select * from 库存表
insert into 门诊销售表 select 1,'电脑',5
select * from 库存表


商品编码 商品名称 数量
1 电脑 14
2 机箱 20
3 硬盘 10

-------------------------------------
商品编码 商品名称 数量
1 电脑 9
2 机箱 20
3 硬盘 10
wzy_love_sly 2007-12-21
  • 打赏
  • 举报
回复
应该没问题吧
hpx021131 2007-12-21
  • 打赏
  • 举报
回复
沙发?

34,576

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧