gpt4 book ai didi

sql-server - 随时随地使用新的唯一标识符

转载 作者:行者123 更新时间:2023-12-04 05:39:29 24 4
gpt4 key购买 nike

我想为表添加一列,该列将成为 PRIMARY KEY 并且类型为 uniqueidentifier。我有这个,但我想知道是否有更快的(更少的代码行)方式?

ALTER TABLE [table] ADD [id] [uniqueidentifier] 
DEFAULT('00000000-0000-0000-0000-000000000000') NOT NULL
GO
UPDATE [table] SET [id] = NEWID()
GO
ALTER TABLE [table] ADD CONSTRAINT [PK_table_id] PRIMARY KEY CLUSTERED
GO

最佳答案

如果你想继续命名你的约束(你应该),我认为我们不能将它减少到 2 个语句以下:

create table T (
Col1 varchar(10) not null
)
go
insert into T (Col1)
values ('abc'),('def')
go
ALTER TABLE T ADD [id] [uniqueidentifier] constraint DF_T_id DEFAULT(NEWID()) NOT NULL
GO
ALTER TABLE T ADD constraint PK_T PRIMARY KEY CLUSTERED (id)
go
drop table T

请注意,我为默认约束添加了一个名称。此外,这确保新行也有 id赋值。正如我在评论中所说,通常最好避免使用由 NEWID() 生成的值的列。聚集 - 它会导致大量碎片。如果您想避免这种情况,请考虑 NEWSEQUENTIALID() .

如果您不关心约束名称,则可以将其作为单个查询进行:
ALTER TABLE T ADD [id] [uniqueidentifier] DEFAULT(NEWID()) NOT NULL PRIMARY KEY CLUSTERED

关于sql-server - 随时随地使用新的唯一标识符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11446315/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com