我正在关注作者(堆栈程序员)声明的这篇SO 帖子
SQL Server 使用标识列作为键值来引用特定的行。因此只能创建一个标识列。
他还提到
此外,如果没有明确声明标识列,则 Sql Server 会在内部存储一个单独的列,其中包含每行的键值。
谁能更详细地解释这两点(特别是第二点)?
谢谢
我正在关注作者(堆栈程序员)声明的这篇SO 帖子
SQL Server 使用标识列作为键值来引用特定的行。因此只能创建一个标识列。
他还提到
此外,如果没有明确声明标识列,则 Sql Server 会在内部存储一个单独的列,其中包含每行的键值。
谁能更详细地解释这两点(特别是第二点)?
谢谢
我希望不会,因为他们都错了。在 SQL Server 中,行由键(在 B 树中)或行 ID(在堆中)标识。非唯一聚集索引有一个内部唯一标识符列。通常 IDENTITY 类型列也用作主键这一事实与问题正交。
不要将您的知识建立在论坛帖子中的内容上,包括 StackOverflow,包括这篇帖子。一个好的来源是官方文档,例如。表和索引数据结构体系结构。阅读一本好书,例如SQL Server Internals系列。