这是我在sqlite中的代码: stmt.execute("如果不存在则创建表人(名称文本,ID INTEGER PRIMARY KEY AUTOINCREMENT)");
但是当我在Navicat中看到我的表时,当我想要使用它时,所有这些都是null。我想像整数(1,2,...)一样使用它。我该怎么办? 请帮帮我......
答案 0 :(得分:1)
一个简单的谷歌查询得出结论:
<强>摘要强>
AUTOINCREMENT关键字会占用额外的CPU,内存,磁盘空间和 磁盘I / O开销,如果不是严格需要,应该避免。它是 通常不需要。
在SQLite中,类型为INTEGER PRIMARY KEY的列是其中的别名 ROWID(除非在WITHOUT ROWID表中),它总是64位签名 整数。
在INSERT上,如果不是ROWID或INTEGER PRIMARY KEY列 明确给出一个值,然后它会自动填充一个 未使用的整数,通常是当前最大的ROWID之一 正在使用。无论AUTOINCREMENT是否正确,都是如此 使用了关键字。
如果AUTOINCREMENT关键字出现在INTEGER PRIMARY KEY之后,那就是 更改自动ROWID分配算法以防止重用 在数据库的生命周期中的ROWID。换句话说, AUTOINCREMENT的目的是防止重用ROWID 以前删除的行。