我正在为每个事务添加一系列记录(例如100)。我希望每条记录都有一个“交易ID”字段,该字段对于每个新交易都是递增的,并且对于在特定交易中插入的每条记录都是相同的值。我希望这样做,以便客户端可以执行查询,然后在将来的某个时刻执行相同的查询,但只检索具有较新事务ID的记录。做这件事的最好方法是什么?我真的不想在应用程序级别生成ID,因为数据库被多个进程访问,所以我必须协调ID分配跨进程。或者我可以有一个专用的TXID表和一个autoincrememt列,在开始事务之前插入,并使用last_insert_rowid()作为TXID,但是为了生成ID,存储递增数字表似乎有点低效。有什么想法吗?谢谢。sqlite:为多插入事务创建事务ID
0
A
回答
1
如果你想要一个递增的整数,你应该确实做你所建议的 - 有另一个表维护事务ID。您可以定期扫描这张表以删除行,尽管它们会非常小巧高效,所以这不应该成为一个大问题。
还有其他各种可能的解决方案,但正如您已经想到的那样,其中大多数解决方案在您的情况下不起作用(根据您所需的保真度,碰撞的可能性)。如果你需要利用数据库来保证唯一性,这是在SQLite中唯一的方法。或者,您可以尝试类似random
或randomblob
functions,但显然没有针对PRG的唯一性保证。
如果不需要一个单调递增的整数,你也可以生成一个RFC 4122 UUID在应用层面(这些仍然冲突,但是很少,如果你是从许多过程编写 - 你可能还需要标记它与一个特定于流程的字符串并使其成为URN,类似于urn:uuid:<tag>+<uuid>
)。如果所有作者都在同一台机器上,使用类似pid
这样的标签就足以保证唯一性。
相关问题
- 1. WebSQL:插入多行/事务
- 2. 多次插入与事务
- 3. Actionscript SQLite在事务中插入语句
- 4. Android SQLite批量插入使用事务
- 5. HTML 5的SQLite:多个插入在一个事务中
- 6. Sqlite事务,语法错误。在同一个事务中插入和删除
- 7. 是否允许在Android SQLite中一次创建多个事务
- 8. 如何使用apsw创建多个复杂的sqlite事务?
- 9. CodeIgniter - 使用事务插入多个表
- 10. 为什么SQLite插入会很慢? (事务使用)
- 11. SQLite事务失败
- 12. SQLite事务失败
- 13. SQLite事务和LastInsertRowID
- 14. 插入事务和参数?
- 15. 创建bitronix事务管理
- 16. 用FK将事务插入到第一行创建的行中
- 17. 用于CSV导入的SQLite事务
- 18. 建议,php mysql事务插入块中的多个表
- 19. SQLite插入即使在事务处理时也会变慢
- 20. Spring + Hibernate + SQLite事务怪异
- 21. Sqlite事务处理读写
- 22. JavaScript SQLite事务回滚
- 23. Android,SQLite连接和事务
- 24. 未提交SQLite事务
- 25. iOS的SQLite事务语法
- 26. 在Spring JTA事务中创建一个本地事务
- 27. 在hibernate事务中创建一个简单的jdbc事务
- 28. 为什么插入1M记录没有事务比在事务中慢?
- 29. 多个事务
- 30. 城堡自动事务管理是否为事务性方法创建TransactionScope?
感谢您的回答。我想过UUID,但我需要确保每个新ID都大于最后一个。将做TXID表解决方案。 – gimmeamilk 2012-03-29 20:45:51