在 为表定义模式时INT PRIMARY KEY和之间有什么区别 INTEGER PRIMARY KEY吗?当使用int主键时,我得到了生成的sqlite_autoindex 东西 ; 当整数主键,我得到sqlite_sequence表生成.有什么不同?什么副作用可以有第一和第二变种?
Rog*_*and 41
更新:SQLite的ROWID列现在是64位整数:
在SQLite中,类型为INTEGER PRIMARY KEY的列是ROWID的别名(WITHOUT ROWID表除外),它始终是64位有符号整数.
在SQLite 3文档中对此进行了解释:
2.0 INTEGER PRIMARY KEY
SQLite无类型的一个例外是类型为INTEGER PRIMARY KEY的列.(并且必须使用"INTEGER"而不是"INT".类型为INT PRIMARY KEY的列与其他类型一样无类型.)INTEGER PRIMARY KEY列必须包含32位有符号整数.任何插入非整数数据的尝试都将导致错误.
INTEGER PRIMARY KEY列可用于实现AUTOINCREMENT的等效项.如果您尝试在INTEGER PRIMARY KEY列中插入NULL,则该列实际上将填充一个比表中已有的最大键大的整数.或者,如果最大的键是2147483647,则该列将填充随机整数.无论哪种方式,INTEGER PRIMARY KEY列都将被分配一个唯一的整数.您可以使用sqlite_last_insert_rowid()API函数或在后续SELECT语句中使用last_insert_rowid()SQL函数来检索此整数.