admin

INT PRIMARY KEY和INTEGER PRIMARY KEY SQLite之间的区别

sql

为表定义模式之间INT PRIMARY KEY和之间有什么区别 INTEGER PRIMARY KEY吗?当使用int主键时,我得到了sqlite_autoindex 东西
。当整数主键,我得到sqlite_sequence表生成。有什么不同?第一个和第二个变体会产生哪些副作用?


阅读 369

收藏
2021-05-10

共1个答案

admin

更新:SQLite的ROWID列现在是64位整数

在SQLite中,类型为INTEGER PRIMARY KEY的列是ROWID的别名(在WITHOUT
ROWID表中除外),该别名始终是64位有符号整数。

所有这些都在SQLite 3文档中进行了说明

2.0整数主键

SQLite无类型性的一个例外是类型为INTEGER PRIMARY KEY的列。(并且必须使用“ INTEGER”而不是“ INT”。INT
PRIMARY KEY类型的列与其他列一样是无类型的。)INTEGER PRIMARY KEY列必须包含32位带符号整数。尝试插入非整数数据将导致错误。

INTEGER PRIMARY KEY列可用于实现等效的AUTOINCREMENT。如果尝试将NULL插入INTEGER PRIMARY
KEY列,则该列实际上将填充一个整数,该整数比表中已有的最大键大1。或者,如果最大键为2147483647,则该列将填充一个随机整数。无论哪种方式,都将为INTEGER
PRIMARY
KEY列分配一个唯一的整数。您可以使用sqlite_last_insert_rowid()API函数或在后续的SELECT语句中使用last_insert_rowid()SQL函数来检索此整数。

2021-05-10