2016-11-08 11 views
2

影響を受けた変更された行の番号を取得する解決策は見つかりませんでした。 各ソリューションがされている "見つかっ/マッチした行" のみ:UPDATE SQLite、影響を受けた変更された行の番号を取得する方法(見つかった一致する行ではない)

しかし、私は貴様値whith更新された行の実数を(知ってほしいです更新ステートメントの前にのみ)。

SQL "matching found rows" vs "affected rows"を参照してください。いずれのコマンドラインもどちらのコネクタでも、PHP PDOは実際に変更された行の数を返すことができませんでした。再開するに

、と:得

CREATE TABLE table_update_count ('id' INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL UNIQUE, 'val' VARCHAR); 
INSERT INTO table_update_count (val) VALUES ('AA'); 
INSERT INTO table_update_count (val) VALUES ('AB'); 
UPDATE table_update_count SET val = 'AB'; 

結果:2

期待される結果:1

そこに私それをする方法はありますか?

私はこれだけで改善を希望していないようです...

+0

あなたの問題はSQLiteのである、それはなかったので、あなたが望むものをサポートしていません行が実際の変更を行ったかどうかを、更新と一致するかどうか比較します。 –

答えて

1

UPDATE文の更新行。このカウントが関係している限り、新しい値が古い値と同じになることは問題ではありません。

あなたが同じ値を持つ行をカウントしたくない場合は、手動でそれらをフィルタリングする必要があります。

UPDATE table_update_count 
SET val = 'AB' 
WHERE val IS NOT 'AB'; 
+0

はい、動的クエリでは、変更があったかどうかを知ることは不可能です。 Androidの場合、WHERE句の各「NOT NEW値」列を宣言しないでください: 'public int updateContact(int id、Contact contact){' 'ContentValues values = new ContentValues();' 'values.put (COL_PHONE、contact.getPhone()); ' '戻り値bdd.update(TABLE_CONTACTS、values、COL_ID +" = "+ id、null);' '}' データベースではそれが本質的に行われません...そして、where句を変更する方法はありません。 – immobiluser

関連する問題