请教一个关于触发器的问题!!

想飞的狼 2006-12-18 04:31:18
有一进销存软件,应收表YSB为记录出库信息,现在想在一次出库数量大于产品半月总销量时出现提示,不向YSB表内插入数据这样写为啥没反应啊.
CREATE TRIGGER YSB_INSERT ON dbo.ysb
FOR INSERT
AS
DECLARE @sl int,@pp1 float
SELECT @sl=数量,@pp1=产品编号 FROM inserted
if @sl >(select sum(数量) from ysb where 产品编号=@pp1)
BEGIN
ROLLBACK TRANSACTION
RAISERROR('申请数量超过店面半月销量',16,10)
END
else
.....
...全文
153 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
羽毛之家 2006-12-20
  • 打赏
  • 举报
回复
数量、与产口编号字段你设的类型的问题吧,最好转换成你所要的类型吧
想飞的狼 2006-12-18
  • 打赏
  • 举报
回复

CREATE TRIGGER YSB_INSERT ON dbo.ysb
FOR INSERT
AS
begin tranc
DECLARE @sl int,@pp1 float
declare @sql varchar(8000)
declare @cnt float
SELECT @sl=数量,@pp1=产品编号 FROM inserted
set @sql = 'select '+@cnt+' = sum(数量) from ysb where 产品编号='+@pp1
exec (@sql)

if @sl > @cnt

BEGIN
ROLLBACK TRANSACTION
RAISERROR('申请数量超过店面半月销量',16,10)
END
else
.....
end


谢谢你的帮助,改完后在程序里提示出错"将数据类型VARCHAR转换成FLOAT时出错"


set @sql = 'select '+@cnt+' = sum(数量) from ysb where 产品编号='+@pp1
啥意思
中国风 2006-12-18
  • 打赏
  • 举报
回复
CREATE TRIGGER YSB_INSERT ON dbo.ysb
FOR INSERT
AS
DECLARE @sl int,@pp1 float
SELECT @sl=数量,@pp1=产品编号 FROM inserted
if @sl >(select sum(数量) from ysb where 产品编号=@pp1)
BEGIN
RAISERROR('申请数量超过店面半月销量',16,10)
ROLLBACK TRANSACTION--这里改一下位置
return--这里改一下
END
else
.............
leo_lesley 2006-12-18
  • 打赏
  • 举报
回复
CREATE TRIGGER YSB_INSERT ON dbo.ysb
FOR INSERT
AS
begin tranc
DECLARE @sl int,@pp1 float
declare @sql varchar(8000)
declare @cnt float
SELECT @sl=数量,@pp1=产品编号 FROM inserted
set @sql = 'select '+@cnt+' = sum(数量) from ysb where 产品编号='+@pp1
exec (@sql)

if @sl > @cnt

BEGIN
ROLLBACK TRANSACTION
RAISERROR('申请数量超过店面半月销量',16,10)
END
else
.....
end
中国风 2006-12-18
  • 打赏
  • 举报
回复
ROLLBACK TRANSACTION 放在RAISERROR('申请数量超过店面半月销量',16,10)后面

27,581

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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