2017-06-15 13 views
0

私のデータベース(MySQLからSQL Serverへ)が変更されましたが、 更新クエリに問題があります。 MySQLで同じデータを更新すると、 '0 影響を受ける行'が返され、SQL Serverでも同じことを試みますが、影響を受ける行は となります。mysqlの更新クエリがmssqlと同じではありません


UPDATE stud_details 
set stud_fname = 'SHERWIN' 
WHERE stud_lrn = 20170610000 

0を返しますSQL Serverのクエリについて私を助けて、あなたが同じデータを更新する際

+1

このステートメントは非常に基本的で、完全に標準に準拠しています。それは 'stud_lrn = 20170610000'のすべてのroを更新します。 'stud_lrn'のデータ型は、もちろん' BIGINT'や 'DECIMAL(n、0)'といった整数型でなければなりません。条件に一致する行を調べるには 'SELECT * FROM stud_details WHERE stud_lrn = 20170610000'を試してください。 –

+0

両方のデータベースにレコードが存在しますか? – Peter

+0

@Thorsten私はあなたが "stud_fname = SHERWN"と言うときに私はstud_fnameを更新し、それを "SHERWIN"に設定すると、クエリを試みます。 MySQLの場合とは異なり、値が変更されていない場合でも、影響を受ける1行が返されます。 –

答えて

0

SQL Serverは、1行が更新されたため、1行が、影響を受けたあなたを語っています。あなたがカンニングしたいし、代わりに影響を受ける0の行を持っている場合、あなたはそれをこの方法を行うことができます。あなたの最初のクエリのための

set nocount on 

UPDATE stud_details 
set stud_fname = 'SHERWIN' 
WHERE stud_lrn = 20170610000 

set nocount off 

UPDATE stud_details 
set stud_fname = stud_fname 
WHERE 1=2 

あなたは文句を言わない行が2番目のクエリは、0行が影響を受けています影響を受けご覧ください。

+0

を見つけるでしょうそれは動作します。ありがとう!しかし、 'nocount on'を設定した場合、戻り値は常に0になります。私のアプリでは' if else condition 'を使うために戻り値を使います –

関連する問題