为表定义模式之间INT PRIMARY KEY和之间有什么区别 INTEGER PRIMARY KEY吗?当使用int主键时,我得到了sqlite_autoindex 东西 。当整数主键,我得到sqlite_sequence表生成。有什么不同?第一个和第二个变体会产生哪些副作用?
INT PRIMARY KEY
INTEGER PRIMARY KEY
sqlite_autoindex
sqlite_sequence
更新: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函数来检索此整数。
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函数来检索此整数。