我有一个带有id(guid)列的sql表。 如何强制DB为每条新记录自动生成一个新的guid?
答案 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