UPDATE更新提示多返回值

davis3747 2016-08-03 01:36:32


ALTER TRIGGER [dbo].[ICbillINcla]
ON [dbo].[ICStockBillEntry]
FOR INSERT
AS
BEGIN
--表A执行插入后触发器执行更新操作
update [dbo].[ICStockBillEntry]
set
[dbo].[ICStockBillEntry].[FEntrySelfB0456]='更测'
FROM
[dbo].[ICStockBillEntry] a,
[dbo].[PPBOMEntry] b
WHERE
a.FEntryID=(select FEntryID from inserted) --只获取当次执行插入的ID序列号
and a.FinterID=(select [FInterID] from inserted) --只获取当次执行插入的ID号 如果不加这两条不报错,但是数据库里所有数据全部更新了
and a.FICMOInterID=b.FICMOInterID
and a.FPPBomEntryID=b.FEntryID
and a.FItemID=b.FItemID
END
出发执行更新A表,提示多个值。就是WHERE。返回值存在多个。
大神看看这个应该怎么写啊
...全文
656 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
davis3747 2016-09-28
  • 打赏
  • 举报
回复
感谢各位帮助,问题已经解决.但是我不会结贴
Ginnnnnnnn 2016-08-05
  • 打赏
  • 举报
回复
update [dbo].[ICStockBillEntry] set [dbo].[ICStockBillEntry].[FEntrySelfB0456]='更测' FROM [dbo].[ICStockBillEntry] a, [dbo].[PPBOMEntry] b WHERE a.FEntryID=(select FEntryID from inserted) --只获取当次执行插入的ID序列号 and a.FinterID=(select [FInterID] from inserted) --只获取当次执行插入的ID号 如果不加这两条不报错,但是数据库里所有数据全部更新了 and a.FICMOInterID=b.FICMOInterID and a.FPPBomEntryID=b.FEntryID and a.FItemID=b.FItemID a.FinterID=(select [FInterID] from inserted) 这个如果批量添加就会报错,解决方法取版主的贴使用exitst解决即可
中国风 2016-08-03
  • 打赏
  • 举报
回复
用EXISTS同INNER JOIN 连接效果是相同的,你自己可测测
中国风 2016-08-03
  • 打赏
  • 举报
回复
EXISTS--是判断条件是否成立(真/假)
davis3747 2016-08-03
  • 打赏
  • 举报
回复
说错了,就是1楼那个更新代码,
ALTER TRIGGER [dbo].[ICbillINcla]
ON [dbo].[ICStockBillEntry]
FOR INSERT
AS 
BEGIN


   update a
     set FEntrySelfB0456=Convert(decimal(18,2),b.FAuxQtyScrap),FEntrySelfB0457=b.FBomInputAuxQty,
         FEntrySelfB0458=b.FScrap,FEntrySelfB0459=b.FAuxQtyLoss
     from [dbo].[ICStockBillEntry] a
     inner join dbo.PPBOMEntry b on a.FPPBomEntryID=b.FEntryID
                                        and a.FItemID=b.FItemID
                                        and a.FICMOInterID=b.FICMOInterID
     inner join dbo.t_ICItem e on a.FItemID=e.FItemID
     inner join inserted c on a.FEntryID=c.FEntryID
                              and a.FinterID=c.FInterID

END
使用2楼版主的代码没有问题。 图片就是我要更新近表里的数据,小数多少位就显示多少位。或者我还有一个专门存放小数位的表跟FItemID一一对应的 Convert(decimal(18,2),中的小数位能否动态提取我数据库里的值。 要回去上上课了,得好好学习学习一下
davis3747 2016-08-03
  • 打赏
  • 举报
回复

EXISTS(SELECT 1 FROM inserted WHERE FEntryID=a.FEntryID AND [FInterID]=a.[FInterID])

EXISTS 及得好像只在乎有没有返回结果么?


查询出来的数据显示的是这么多位小数。
Convert(decimal(18,2),FAuxQtyScrap) 保留两位小数
但是我想让它按照有多少小数就显示多少位,只是把后面多余的0去掉。
不知道有没有函数可以解决。
中国风 2016-08-03
  • 打赏
  • 举报
回复
你这是批量新增数据时不正确?

a.FEntryID=(select FEntryID from inserted)    --只获取当次执行插入的ID序列号  
and a.FinterID=(select [FInterID] from inserted) --只获取当次执行插入的ID号 如果不加这两条不报错,但是数据库里所有数据全部更新了

你的语句这样只支持单条新增数据

要批量新增数据时把这段条件这样改
EXISTS(SELECT 1 FROM inserted WHERE FEntryID=a.FEntryID AND [FInterID]=a.[FInterID])
davis3747 2016-08-03
  • 打赏
  • 举报
回复
引用 1 楼 ap0405140 的回复:
try this,

ALTER TRIGGER [dbo].[ICbillINcla]
 ON [dbo].[ICStockBillEntry]
 FOR INSERT
 AS 
 begin
   --表A执行插入后触发器执行更新操作
   update a
     set [FEntrySelfB0456]='更测'
     from [dbo].[ICStockBillEntry] a 
     inner join [dbo].[PPBOMEntry] b on a.FPPBomEntryID=b.FEntryID
                                        and a.FItemID=b.FItemID
                                        and a.FICMOInterID=b.FICMOInterID
     inner join inserted c on a.FEntryID=c.FEntryID
                              and a.FinterID=c.FInterID
 end
感谢版主老大。。。老大出马一个顶俩 有个疑惑 join 出来也是以行一行的,为啥UPDATE可以逐行更新? 我之前那个代码返回的也是一行一行的,咋不行呢? 刚看了 join 的语法没看出啥来 感谢版主。我把 b表的值赋给SET 看看。
唐诗三百首 2016-08-03
  • 打赏
  • 举报
回复
try this,

ALTER TRIGGER [dbo].[ICbillINcla]
 ON [dbo].[ICStockBillEntry]
 FOR INSERT
 AS 
 begin
   --表A执行插入后触发器执行更新操作
   update a
     set [FEntrySelfB0456]='更测'
     from [dbo].[ICStockBillEntry] a 
     inner join [dbo].[PPBOMEntry] b on a.FPPBomEntryID=b.FEntryID
                                        and a.FItemID=b.FItemID
                                        and a.FICMOInterID=b.FICMOInterID
     inner join inserted c on a.FEntryID=c.FEntryID
                              and a.FinterID=c.FInterID
 end

27,579

社区成员

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

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