我有一个使用SQL Server 2016进行后端存储的应用程序。我有以下声明我试图运行:
UPDATE dbo.AspNetUsers
SET [IsActive] = 1
WHERE [Id] = '1b08b7a9-2978-4116-8a9c-e86bc9ae8bbf'
[IsActive]
是BIT
列[Id]
是NVARCHAR(128)
列执行时,我收到以下错误:
Msg 245,Level 16,State 1,Procedure tUserActiveChange,Line 21 [Batch Start Line 4]
转换nvarchar值时转换失败' 1b08b7a9-2978-4116-8a9c-e86bc9ae8bbf'数据类型int。
看起来像一个非常简单的更新声明。我甚至在同一服务器上的另一个数据库上尝试了相同类型的语句,其中更新的列是BIT
并且使用VARCHAR
列来表示WHERE
条件并且它工作得很好。 / p>
到底是什么?
答案 0 :(得分:2)
好吧,我意识到我有一个触发器,我创建了一段时间后导致错误(tUserActiveChange)。当IsActive更改时,触发器会更新另一个表。实际上,它试图将VARCHAR变量分配给int字段。 我修复了这一点,现在UPDATE语句工作正常。谢谢大家花时间研究这个问题。我现在觉得很傻。哈哈。