我已经阅读了https://sqlite.org/autoinc.html,但仍然不能完全确认以下观点。
我想知道,INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL保证是rowid的别名
例如,对于下表
CREATE TABLE `attachment` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `name` TEXT NOT NULL, ... )将要
select * from attachment order by id;等同于
select * from attachment order by rowid;谢谢。
发布于 2021-05-11 16:16:05
您引用的链接描述了用于选择缺省行ou的各种算法(使用ou而不使用AUTOINCREMENT)。
ROWIDs and the INTEGER PRIMARY KEY中详细介绍了将主键作为整数主键(以及行in的别名)的规则:
列的case insensitive)
PRIMARY KEY DESC(
INTEGERSQLite不遗余力地保留记录的行为(有时没有记录,例如,第二条规则是不破坏与旧bugged版本的兼容性)
因此,INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL是rowid的别名,并选择算法来保证生成的rowid永远不会被重用,即使您删除了行。
https://stackoverflow.com/questions/67481920
复制相似问题