之前,DBA就曾和我说过
最好用一个没有意义的自增长id来作为表的主键
当时也没有怎么去想这么做的意义

直到最近
我们的Sqlite出了一个这样的问题
当Sqlite库出现“database disk image is malformed”错误时
我们采用了Sqlite数据库的恢复这样的办法来恢复
按常理来讲,应该是没问题的

可惜,我们的某个表中使用了Sqlite自身默认的rowid来作为主键
而且,该rowid还和另外一个表的某个字段进行了关联
所以,dump出来的数据再导进去后,某些行的rowid就发生了变化
这样,和另外一个表的对应关系就断掉了.....
无奈,只能通过查询坏掉的sqlite对应记录来来修改对应的rowid
或者,通过很麻烦的办法来重建Sqlite,再去修改对应的status
如果,当初我们使用一个自增长的id来作为主键并关联的话
那么,就不会有这个问题了......


血的教训啊......