我有一个这种格式的表:
a | b
----------
12.1| NULL
6.4 | NULL
55.5| NULL
我想简单地将值从over复制到b。
我已经回顾了这个问题的其他答案,看来人们可以通过一个简单的查询来做到这一点:
UPDATE table
SET b = a
但是,这会产生以下错误:
子查询返回的值超过1。当子查询遵循=,!=,<,< =,>,> =或子查询用作表达式时,不允许这样做。 声明已经终止。
我的数据库中是否需要检查哪些内容无效?我可以或应该使用替代查询吗?
答案 0 :(得分:3)
我敢打赌你的桌子有一个更新的触发器,那个触发器就是造成这个问题的原因 事实是sql server中的触发器是按语句引发的,而不是每行引发的。 这意味着对于您提供的示例数据,update语句将生成一个包含3条记录的插入表。 我会在你的触发器中打赌你做这样的事情:
select @localVariable = a from inserted.
这就是造成这个问题的原因。