首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >"INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL“是否保证是"rowid”的别名?

"INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL“是否保证是"rowid”的别名?
EN

Stack Overflow用户
提问于 2021-05-11 15:00:04
回答 1查看 36关注 0票数 0

我已经阅读了https://sqlite.org/autoinc.html,但仍然不能完全确认以下观点。

我想知道,INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL保证是rowid的别名

例如,对于下表

代码语言:javascript
复制
CREATE TABLE `attachment` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `name` TEXT NOT NULL, ... )

将要

代码语言:javascript
复制
select * from attachment order by id;

等同于

代码语言:javascript
复制
select * from attachment order by rowid;

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2021-05-11 16:16:05

您引用的链接描述了用于选择缺省行ou的各种算法(使用ou而不使用AUTOINCREMENT)。

ROWIDs and the INTEGER PRIMARY KEY中详细介绍了将主键作为整数主键(以及行in的别名)的规则:

列的case insensitive)

  • The声明不能包含PRIMARY KEY DESC

(

  • 类型必须正好为INTEGER

SQLite不遗余力地保留记录的行为(有时没有记录,例如,第二条规则是不破坏与旧bugged版本的兼容性)

因此,INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL是rowid的别名,并选择算法来保证生成的rowid永远不会被重用,即使您删除了行。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67481920

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档