数据库如何自动生成唯一标识符?

10

我有一个带有ID(GUID)列的SQL表格。 如何强制数据库为每个新记录自动生成一个新的GUID?

3个回答

20

添加 DEFAULT(newid())


感谢。将其定义为标识 GUID 是否有意义? - Elad Benda

2
使用DEFAULT(newid())方法,正如@SLaks所提到的那样,你将允许任何人更改Guid列中的Guid值,这可能是不好的。
避免这种情况的一种方法是将"Guid"列设置为持续计算列。这样,你甚至不能"强制"另一个值进入该列。但是,由于NEWID()函数是非确定性的,所以你无法将计算列定义为持久化的,整个方法就失败了,因为如果不将其设置为持久化,则每次选择该行时都会生成新的Guid。
话虽如此,我认为你有两个选择:坚持使用DEFAULT(newid())方法或使用触发器来实现。

1
请尝试使用以下查询:

CREATE TABLE TEST
(
    ID UNIQUEIDENTIFIER DEFAULT NEWSEQUENTIALID() PRIMARY KEY,
    TESTCOLUMN CHAR(2000) DEFAULT REPLICATE('X',2000)
)
GO

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接