当我在SQLite数据库中创建表时,会自动为每个表创建单独的序列.
但是我想在我的SQLite数据库中为所有表使用一个序列,并且还需要设置min和定义该序列的max值(例如min=10000和max=999999)(min并且max表示序列的起始值和序列可以递增的最大值).
我知道这可以在Oracle数据库中完成,但不知道如何在SQLite中完成.
有没有办法做到这一点?
不幸的是,你不能这样做:SQLite自动为特殊sqlite_sequence服务表中的每个表创建序列.
即使你以某种方式强迫它将单个序列作为所有表的源,它也不会像你期望的那样工作.例如,在PostgreSQL中或Oracle,如果你设置序列值说1,但表已填充了值的行1,2......,任何企图利用该序列插入新行作为源会失败,违反唯一约束.
但是,在SQLite中,如果使用以下方法手动重置序列:
UPDATE sqlite_sequence SET seq = 1 WHERE name = 'mytable'
Run Code Online (Sandbox Code Playgroud)
并且已经有行1,2,3,...,新的尝试插入不会失败,而是自动进行适当的自动增量列分配此序列最大现有的值,因此它可以继续下去了.
请注意,您可以使用此hack为序列指定起始值,但是您无法使其停止递增某个值(除非您使用其他方法观察它).
| 归档时间: |
|
| 查看次数: |
6929 次 |
| 最近记录: |