1回のトランザクションにつき一連のレコード(たとえば100)を追加します。私は各レコードに「トランザクションID」フィールドを持たせ、新しいトランザクションごとにインクリメントし、特定のトランザクション内に挿入されたレコードごとに同じ値にします。クライアントがクエリを実行し、その後、同じクエリを実行することができますが、新しいトランザクションIDを持つレコードのみを取得できるようにします。それをする最善の方法は何ですか? DBはいくつかのプロセスからアクセスされるため、アプリケーションレベルでIDを生成する必要はありません。そのため、ID割り当てのクロスプロセスを調整する必要があります。または、私は単一のautoincrememt列を持つ専用のTXIDテーブルを作成し、トランザクションを開始する前にそれを挿入し、TXIDとしてlast_insert_rowid()を使用することができますが、IDを生成するだけのインクリメントのテーブルを格納するのは少し非効率です。何かご意見は?ありがとう。sqlite:マルチインサートトランザクションのトランザクションIDを作成する
0
A
答えて
1
整数を増分したい場合は、実際に提案したことを実行する必要があります。トランザクションIDを保持している別のテーブルが必要です。行を削除するには、この表を公平に掃引することができますが、行が非常に小さく効率的になるため、大きな問題ではありません。
他にもさまざまな解決策がありますが、既に理解しているように、ほとんどの場合、状況に応じて動作しません(必要な忠実度に応じて衝突する可能性があります)。一意性を保証するためにデータベースを活用する必要がある場合は、これがSQLiteで行う唯一の方法です。あるいは、random
またはrandomblob
functionsのようなものを試すこともできますが、PRGには一意性保証はありません。
あなたはあなたは多くのプロセスからの書き込みしている場合にも、これらはしかし、まれまだ競合、することができます(アプリケーションレベルでRFC 4122 UUIDを生成することができ、単調に増加する整数を必要としない場合 - あなたはまた、タグ付けする場合がありますプロセス固有の文字列を使用して、urn:uuid:<tag>+<uuid>
のようなURNにします)。すべてのライターが同じマシン上にある場合、タグとしてpid
のようなものを使用すれば、一意性を保証するのに十分です。
関連する問題
- 1. POS用のトランザクションIDを生成
- 2. ユーザー作成トランザクション
- 3. トランザクションsqlite? C#で
- 4. なぜ新しい(SQLite)データベースファイルが各トランザクションで作成されるのですか?
- 5. SQLiteトランザクション数制限?
- 6. Android、SQLiteトランザクションとプロセスフリーズ
- 7. トランザクションLaravelスキーマの作成
- 8. HTML5、SQLiteトランザクションの質問
- 9. sqliteテーブルの作成
- 10. sqliteトランザクションに関する質問
- 11. InnoDbトランザクションと作成ステートメント
- 12. sys.dm_tran_current_transaction。トランザクションIDをユニークにする方法
- 13. HibernateのトランザクションIDのログ
- 14. SQLiteテーブル作成エラー
- 15. eclipseでsqliteデータベースを作成する
- 16. AndroidでSQLiteテーブルを作成する
- 17. iPhone:パスワードを作成するSQLiteデータベース
- 18. AndroidでSQLite DBを作成する
- 19. QtでSQLiteデータベースを作成する(C++)
- 20. スレッドセーフ固有のトランザクションID
- 21. MySQLトリガー内のトランザクションID
- 22. SQLiteデータベースとテーブルの作成
- 23. ENUMとSQLiteの型作成
- 24. トランザクションを使用するストアドプロシージャを作成する方法は?
- 25. Springでトランザクションを使用するときのコミットの作成
- 26. トランザクション内で複数のアイテムを作成/削除する方法
- 27. PHP PDOトランザクション内に複数のテーブルを作成する
- 28. ストアドプロシージャへのトランザクションを作成するにはC#
- 29. sqliteのは:moveToFirstは標準SQLiteのカーソルを作成した後
- 30. MongoDb with POCOs id値を作成する
お返事ありがとうございます。私はUUIDについて考えましたが、新しいIDのそれぞれが最後のIDよりも大きくなるようにする必要があります。 TXIDテーブルソリューションを行います。 – gimmeamilk