2016-12-29 25 views
0

我有一个应用程序使用SQL Server 2016作为后端存储。我有以下的说法我试图运行:简单SQL UPDATE语句的转换错误

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]
Conversion failed when converting the nvarchar value '1b08b7a9-2978-4116-8a9c-e86bc9ae8bbf' to data type int.

似乎l这是一个非常简单的更新声明。我甚至在同一台服务器上的另一个数据库上尝试了相同类型的语句,其中更新的列是BIT并且使用VARCHAR列作为WHERE条件,它工作得很好。

这是什么?

+0

您的Id字段(在表中)不是NvarChar(128)。它实际上定义为Int。你必须在表格中定义另一列为GUID – Sparrow

+0

你确定'id'类型不是'int'吗?请运行'sp_help AspNetUsers'并确认。 – DarkKnight

+0

我再次检查,[Id]是VARCHAR(128) – TSoder

回答

2

嗯,我意识到我有一个触发器,我创建了一段时间后导致错误(tUserActiveChange)。当IsActive更改时,触发器会更新另一个表。事实上,它试图将一个VARCHAR变量分配给一个int字段。 我修正了这个问题,现在UPDATE语句正常工作。谢谢大家花时间研究这一点。我现在感到很傻,哈哈。