为表生成主键时最好的方法是什么?
即当数据库接收到的数据不是单射的,不能作为主键时。
在代码中,管理表行的主键的最佳方法是什么?
谢谢。
AUTO_INCREMENT
在 mysql 中,IDENTITY
在 SQL Server 中。
首先建议远离任何主键的唯一标识符。尽管它有一些有趣的简单方法可以在客户端生成它,但它几乎不可能在主键上有任何可能有用的索引。如果我能及时返回并在 99% 的地方禁止使用唯一标识符,这将在过去 2 年中节省超过 3 人年的 dba/开发时间。
这是我的建议,使用 INT IDENTITY 作为主键。
create table YourTableName(
pkID int not null identity primary key,
... the rest of the columns declared next.
)
其中 pkID 是您的主键列的名称。
这应该做你正在寻找的。
IDENTITY
在 SQL Server 中
如果你需要知道你的新 ID 是什么同时INSERT
-ing 数据,使用OUTPUT
语句子句INSERT
- 所以新行的副本被放入 table-type 参数。
如果由于某种原因在 SQL 中生成唯一 ID 不适合您,请在您的应用程序中生成 GUID - GUID 具有非常高的唯一性(但实际上并不能保证)。SQL Server 为列提供了专用的 GUID 类型 - 它被称为uniqueidentifier
.