db如何自动生成uniqueidentifier?

时间:2011-11-24 19:18:56

标签: sql sql-server tsql

我有一个带有id(guid)列的sql表。 如何强制DB为每条新记录自动生成一个新的guid?

3 个答案:

答案 0 :(得分:20)

添加DEFAULT(newid())

答案 1 :(得分:2)

使用DEFAULT(newid())方法,就像@SLaks所提到的那样,你可以允许任何人改变Guid列中的Guid值,这可能是坏事。

避免这种情况的一种方法是将“Guid”列设置为持久计算列。这样你甚至无法将另一个值“强制”到Column上。但是,由于NEWID()函数是非确定性的,因此您无法将计算列定义为持久化,并且整个方法都会停止,因为每次选择该行时,不会设置为持久化将导致新的Guid。

那就是说,我相信你有两个选择:坚持使用DEFAULT(newid())方法或者使用触发器。

答案 2 :(得分:0)

请尝试使用以下查询:

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