【发布时间】:2011-04-17 23:09:56
【问题描述】:
“每个表只能有一个 IDENTITY 列”
为什么会这样?以车辆为例,存在唯一的底盘号和唯一的注册号。为了在 sql server 中描述这个场景,我们需要一个自定义的实现来实现一个列。相反,在 Oracle 中,您可以在一个表上拥有任意数量的序列。为什么对 IDENTITY 列有限制,有什么具体原因吗?
拥有车辆架构的场景是虚构的,我质疑自己为什么对身份列有限制。
【问题讨论】:
-
我想知道为什么不可能。
-
因为 SQL Server 团队的工程师要么做不到,要么认为这样做不是个好主意。
-
PostgreSQL 也 [谢天谢地] 有序列,我同意它们是比 IDENTITY 更好的方法(以及 MySQL 的 auto_increment )。为什么 SQL Server 不支持这个?我认为这是对 SQL Server 所基于的 Sybase 代码的回归,但构建该代码的人从未遇到过这种需求。我承认,需要非常极端。
-
听起来有人正在放弃对 SqlServer 的需求实现。
-
@Chaitanya - 如果你的索引被正确应用,它不会很糟糕。另请记住,您在设计中禁止任何人拥有多于一辆车。理想情况下,车辆将有一个 ID,车主将有一个 ID,并且您将有更大的灵活性来模拟现实世界的情况。我想这将取决于您是希望您的数据适合现实世界,还是让现实世界适应您的数据模型......
标签: sql-server identity-column database-design