如何在SQLite中使用序列?

我正在编写一个基于 PHP的Web应用程序,它应该可以与多个数据库系统一起使用.最重要的是MySQL和SQLite,但PostgreSQL和其他人也会很好.为此,我尝试尽可能使用便携式SQL.如果无法做到这一点,我在查询中定义了一些由我的数据库层处理并转换为特定于平台的SQL命令的元字.

我现在正在尝试添加序列支持.每个DBMS处理不同的序列,没有通用的方法在SQL中编写它们.我已经阅读并理解了PostgreSQL does it的方式.我发现了一个有趣的solution for MySQL,它使用MyISAM表来逃避事务的隔离约束.毕竟,序列不会随着它们使用的事务而回滚,这正是我想要的.序列应该是多用户安全的.

现在我还没有找到SQLite的解决方案.它缺乏内置的序列支持.它没有提供在正在运行的事务之外存储数据的方法.我目前的实现是锁定表足够远,以执行SELECT MAX(…)并使用该值.但我想完全摆脱它.在SQLite中,这种方法需要锁定整个数据库!

有没有人知道SQLite的解决方案?

我会使用lastInsertRowID.这将返回最后插入数据的rowid(等于该行的INTEGER PRIMARY KEY值). 那你就不需要任何顺序了.
相关文章
相关标签/搜索