如何修复 SQL 波斯语更新表中的错误 [子查询返回超过 1 个值...]

问题描述 投票:0回答:1

我想更新数据库中的一张表。但我收到错误并且不知道为什么。

enter image description here

UPDATE TbSoore
SET    MakiMadani = N'مکی'
WHERE  MakiMadani = N'مکه'

执行时出现此错误:

消息 512,级别 16,状态 1,过程 TrigUpdateDateSoore,第 9 行 [批量开始第 0 行] 子查询返回超过 1 个值。当子查询跟在 =、!=、<, <= , >、>= 后面或子查询用作表达式时,这是不允许的。 该声明已终止。

我有什么错?

新编辑。 这是触发器:

USE [NewYekAye]
    GO
    /****** Object:  Trigger [dbo].[TrigUpdateDateSoore]    Script Date: 15/02/1403 03:19:09 ب.ظ ******/
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO

ALTER Trigger [dbo].[TrigUpdateDateSoore] On [dbo].[TbSoore]
 After Update,Insert
 As Begin
Update TbSoore Set ModifyDateTime = GETDATE()
Where TbSoore.IdSoore= (Select d.IdSoore from inserted d)
End
sql-server t-sql sql-update
1个回答
0
投票

我找到了。

就像 Sergey 所说(在评论中),问题是触发的,当我用

 TbSoore.IdSoore in (Select d.IdSoore from inserted d)
替换
 TbSoore.IdSoore = (Select d.IdSoore from inserted d)
时,查询工作成功。

谢谢你谢尔盖

© www.soinside.com 2019 - 2024. All rights reserved.