免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2709 | 回复: 2
打印 上一主题 下一主题

触发器实现update时多行插入 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-07-03 00:18 |只看该作者 |倒序浏览
Create table product
(
pId char(6) primary key,
pName varchar(300) not null,
pPrice smallmoney,
pNum float
)
go


Create table sale
(
sNo int identity(1001,1) primary key,
sId char(6),
sPrice smallmoney,
sDate datetime
)
go

用触发器实现:
update product set pNum=pNum-x where pid=a

当这个发生的时候,sale表中插入数据,插入的行数 为 x(假设x为整数)
当x为float时候(比如x=5.5),插入的行数为6行。

如何实现。。。
Create trigger trgCheck
On product
For Update
As
Begin
       
        Declare add_data cursor
        For
        Select pId,pPrice from Inserted
        Open add_data
        Declare @Id char(6),@Price smallmoney
        Fetch Next From add_data into @Id,@Price
        while(@@Fetch_status=0)
        begin
                Insert into Sale(sId,sPrice,sDate) values(@Id,@Price*1.2,getDate())
                Fetch Next From add_data into @Id,@Price
        end
        Close add_data
        deallocate add_data
End----------------------------这个是错误的,可能缺少pnum的判断吧。。。如何写?
求救下

[ 本帖最后由 JJooO 于 2008-7-3 11:20 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2008-07-03 11:21 |只看该作者

回复 #1 JJooO 的帖子

怎么没人呢。。。郁闷

论坛徽章:
0
3 [报告]
发表于 2008-07-04 08:53 |只看该作者
不知道,楼主,你的x是否为一个变量?

如果是的话,建议你多定义一个变量来解决,如果不是的话,需要通过查询视图

select tname,colno,coltype from col;

来获取你的x这个字段的类型
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP