updte 语句的问题! 急!!!!

liaoxiaohua1981 2005-10-25 11:04:37
我为一个表:TopUser 加了一个update触发器!
CREATE TRIGGER topuserupdate ON dbo.TopUser
FOR UPDATE
AS
UPDATE
TopUser set Sequence=LinkTimes/CallTimes+convert(int,SetTime)+TopUserAuto+TopUserSelf+TopUserSys where TopUser.UserID=(select UserID from inserted)

可当我想更改里面的一个字段的值时

update TopUser set Linking=1 where UseSex=2

,出现错误:

子查询返回的值多于一个。当子查询跟随在 =、!=、<、<=、>、>= 之后,或子查询用作表达式时,这种情况是不允许的。
语句已终止。


...全文
109 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
vivianfdlpw 2005-10-25
  • 打赏
  • 举报
回复
楼主需要禁用触发器递归:

exec sp_configure 'nested triggers','0'
reconfigure with override
go
vivianfdlpw 2005-10-25
  • 打赏
  • 举报
回复
CREATE TRIGGER topuserupdate
ON dbo.TopUser
FOR UPDATE
AS

UPDATE TopUser
set Sequence=LinkTimes/CallTimes
+convert(int,SetTime)
+TopUserAuto
+TopUserSelf
+TopUserSys
where TopUser.UserID in (select UserID from inserted)
点点星灯 2005-10-25
  • 打赏
  • 举报
回复
select UserID from inserted --查询出来的不是一个值

--试试
UPDATE
TopUser set
Sequence=LinkTimes/CallTimes+convert(int,SetTime)+TopUserAuto+TopUserSelf+TopUserSys
where TopUser.UserID in(select UserID from inserted)
caiyunxia 2005-10-25
  • 打赏
  • 举报
回复
不能用=
用in 或者 exists
caiyunxia 2005-10-25
  • 打赏
  • 举报
回复
UPDATE
TopUser set Sequence=LinkTimes/CallTimes+convert(int,SetTime)+TopUserAuto+TopUserSelf+TopUserSys where TopUser.UserID=(select UserID from inserted)
当批量修改时, select UserID from inserted 了多个直

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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