2017-09-15 16 views
0

私はSQLiteデータベースを持っています。新しいレコードと変更されたレコードを常に増加するカウンタでマークする必要があります。ですINSERTとUPDATEのSQLite自動インクリメント

UPDATE customer SET name = "blablabla", counter = (SELECT MAX(counter) FROM customer) + 1 WHERE id = myId 

インサート::私は

ものは、私は、現時点で使用している私の2つのクエリある競合状態を回避する必要が

INSERT INTO customer (id, name, counter) VALUES (myId, "blablabla", ((SELECT MAX(counter) FROM customer) + 1)) 

更新この金庫?私はCordovaのモバイルアプリケーションでSQLiteを使用しています

もしそうでない場合は、どうすればいいですか? counterAUTO_INCREMENTと宣言し、それらの2つのクエリだけを持つことはできますか?

インサート:

INSERT INTO customer (id, name) VALUES (myId, "blablabla") 

更新:

UPDATE customer SET name = "blablabla", counter = (SELECT MAX(counter) FROM customer) + 1 WHERE id = myId 
+0

SQLiteとMySQLは全く異なる2つのものです。 – tadman

+0

SQLiteを試してみよう... BTW brilliant - > https://github.com/ConsenSys/dapp-store-contracts/blob/master/contracts/ReviewModel.sol –

+0

SQLiteはアプリケーションに埋め込むのに適していますサーバープロセスは必要ありません。 – tadman

答えて

1

このカウンタコール毎回の値だけを保持していないテーブルを作成新しいレコードや更新を追加し、値を1ずつ増やして、その値をテーブルに書き戻してください。レコードを削除しても、上記と同じことをして、カウンタの値を1だけ小さくする

レコードが、本当のIDが何であるかは重要ではありませんまたは私はあなたが私はSqliteをのみ

について話しています何をしているか不足していますIDとpsudoのIDを持っている必要がありますなぜあなたは分あなたは私たちに言うことができるしていない場合
+0

私は、削除の問題を解決して、削除をアップデートに変換しました。基本的に、レコードを実際に削除する代わりに、私は「削除済み」フィールドを更新します。すべての「選択」クエリがANDing with deleted = 0を選択しています –

関連する問題