SQLite的Autoincrement属性

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的说明:

  1. 在绝大多数情况下,Autoincrement并不需要使用,也不推荐使用,因为会消耗一定的性能。
  2. 实际上,在sqlite中,INTEGER PRIMARY KEY属性的列是ROWID的别名,而ROWID列在sqlite的表中会自动生成。
  3. 当插入一行数据时,如果没有显式指定ROWID 或者 INTEGER PRIMARY KEY column的值,数据库将自动分配一个未使用的整数值(该值在同一个表中不能重复),一般使用比当前最大ROWID更大的值,除非最大的ROWID已经是最大的整数(此时数据库会去找某一个更小但未被使用的值)。
  4. Autoincrement只在以下情况考虑使用:不允许使用已经删除的行的ROWID 值。

由于本人程序所涉及的数据库字段不需要满足上面的第4点要求,同时需要Autoincrement的字段都是 INTEGER PRIMARY KEY column属性的,因此直接忽略这个问题即可。。。

如果一定要加入该字段,可以参考网上的一些解决方案,如https://blog.csdn.net/az44yao/article/details/7736782,不过操作挺麻烦。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值