によって行を更新する場合、ステートメントUPDATE
で設定されたフィールドの一部が保持される場合にのみ、その行が「影響を受ける」ことが常に保証されますか?UPDATE
NOT field='value'
それはまた、定数フィールド値を持つ2つの直接連続しUPDATE
た の場合、2番目のものが常に0行に「影響」することを意味しますか?
によって行を更新する場合、ステートメントUPDATE
で設定されたフィールドの一部が保持される場合にのみ、その行が「影響を受ける」ことが常に保証されますか?UPDATE
NOT field='value'
それはまた、定数フィールド値を持つ2つの直接連続しUPDATE
た の場合、2番目のものが常に0行に「影響」することを意味しますか?
はい、結果はSQLクエリで変更された行の数のみを表示するため、最初のクエリがすでに行われているため、2番目のクエリは行を変更しません
両方の点で正しいです (== 演算子は MySQL には存在しませんが、わかりやすくするために使用しただけだと思います)。
影響を受ける行は、変更された行のみをカウントします。そのため、どのフィールドも変更されていない場合は、何も影響を受けません。この changed の比較では、クエリで実際に使用されるものとは異なり、大文字と小文字が区別されることに注意してください。
編集: http://dev.mysql.com/doc/refman/5.1/en/mysql-affected-rows.html
UPDATE ステートメントの場合、影響を受けた行の値はデフォルトで実際に変更された行数です。mysqld に接続するときに mysql_real_connect() に CLIENT_FOUND_ROWS フラグを指定すると、影響を受ける行の値は「見つかった」行の数になります。つまり、WHERE 句によって一致します。
MySQLが「実際に変更された」かどうかを構成するものをどのように決定するかについてのリンクを探しています。言葉遣いに基づいて、前と後の値がバイナリレベルで等しくない場合にのみ、実際に変更されたと見なされることを意味していると想定することは明らかです。
ソースに飛び込まなければ、おそらくそれを証明することはできません。