2016-12-29 4 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.

ikeはかなり簡単な更新ステートメントです。私はさらに、更新された列がBITであり、WHEREの条件にVARCHARの列を使用している同じサーバー上の別のデータベースで、同じ種類の文を試してみました。

何ですか?

+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文が正常に動作しています。これを調べる時間をとっていただきありがとうございます。今、私は馬鹿だと感じる。

関連する問題