精易论坛

标题: sqlite不宜用rowid当主键 [打印本页]

作者: lhighsong    时间: 2016-5-9 09:14
标题: sqlite不宜用rowid当主键
我近日使用sqlite数据库,用vacuum收缩数据库时,表中rowid重排了。比如表1中原来rowid是1到6,把2、4记录删除后,rowid是1、3、5、6,但vacuum后,rowid变成1、2、3、4。而表2中有一列是"表1id",如果有一行记录的"表1id"是5,vacuum之后在表1中就找不到数据了,而能找到的,也乱了。

没法,只好在每个表里新建了id列作为主键,所以不建议用rowid作主键。

作者: lhighsong    时间: 2016-5-9 09:18
准确来说,是不宜当外键。
作者: jksuan    时间: 2016-5-10 11:53
想在其它表中关联ID最好是自己设置的一个唯一特征字段,这样才能保证一致性,维护收缩表当然会把内置自增ID重排了!




欢迎光临 精易论坛 (https://125.confly.eu.org/) Powered by Discuz! X3.4