SQLite的Autoincrement属性
项目中的sqlite模板文件一直以db文件形式存在,没有使用pdm文件,因此需要转化为pdm的形式。使用PowerDesigner时发现,对于ODBC数据库Autoincrement
无法在PowerDesigner中设置。
首先考虑了如下方案: 设计并生成表结构后,再用sql语句对表的字段属性进行修改,即使用ALTER TABLE table_name ALTER COLUMN column_name datatype
语句。但是执行该语句失败,网上搜索后发现MYSQL支持该语句,而sqlite不支持。sqlite的ALTER TABLE
只能用于修改表名和增加字段http://www.runoob.com/sqlite/sqlite-alter-command.html。
最终在官方文档中找到了关于SQLite Autoincrement
的说明:
- 在绝大多数情况下,
Autoincrement
并不需要使用,也不推荐使用,因为会消耗一定的性能。 - 实际上,在sqlite中,
INTEGER PRIMARY KEY
属性的列是ROWID
的别名,而ROWID
列在sqlite的表中会自动生成。 - 当插入一行数据时,如果没有显式指定
ROWID
或者INTEGER PRIMARY KEY column
的值,数据库将自动分配一个未使用的整数值(该值在同一个表中不能重复),一般使用比当前最大ROWID
更大的值,除非最大的ROWID
已经是最大的整数(此时数据库会去找某一个更小但未被使用的值)。 Autoincrement
只在以下情况考虑使用:不允许使用已经删除的行的ROWID
值。
由于本人程序所涉及的数据库字段不需要满足上面的第4点要求,同时需要Autoincrement
的字段都是 INTEGER PRIMARY KEY column
属性的,因此直接忽略这个问题即可。。。
如果一定要加入该字段,可以参考网上的一些解决方案,如https://blog.csdn.net/az44yao/article/details/7736782,不过操作挺麻烦。