Vic*_*kov 2 database sqlite unique auto-increment
我知道sqlite数据库会自动为插入的每个记录生成一个唯一的id(自动增量).
有没有人知道在执行替换查询时是否有可能在sqlite3数据库中耗尽系统唯一ID?
我的意思是数据库中的每一段数据都有自己的类型.例如,系统唯一ID类似于int.如果数据库生成的唯一ID等于MAX_INT,那么数据库将对下一条记录执行什么操作?
谢谢.
最大可能ID为9223372036854775807(2 ^ 63 - 1).在任何情况下,如果找不到新的自动增量主键,它将返回SQLITE_FULL.
还有一点很重要.如果使用INTEGER PRIMARY KEY,它可以重用之前表中的键,但已被删除.如果使用INTEGER PRIMARY KEY AUTOINCREMENT,它永远不会重用自动增量键.
http://www.sqlite.org/autoinc.html
"如果最大的ROWID等于最大可能的整数(9223372036854775807),则数据库引擎会随机选择正候选ROWID,直到找到以前未使用过的ROWID为止.如果在合理的尝试次数后没有找到未使用的ROWID,插入操作失败并出现SQLITE_FULL错误.如果没有显式插入负ROWID值,则自动生成的ROWID值将始终大于零.
鉴于sqlite id是64位,你可以在接下来的546年中每100毫秒插入一条新记录,然后用完(我编写了这些数字;但你明白了).
归档时间: |
|
查看次数: |
3211 次 |
最近记录: |