为没有循环的表生成guid

时间:2012-03-23 17:53:12

标签: sql sql-server sql-server-2008

我有一张包含100条没有PK记录的表。

我需要为它添加随机GUID。之前:

    First Name   Last Name   GUID
      John         Smith
      Alex         Smith
etc

后:

    First Name   Last Name   GUID
      John         Smith    34234234gyerfw
      Alex         Smith    werwer32r23r
etc

目前我可以通过以下方式实现:

使用值创建标识列,然后进行while循环并生成newid()。 关于如何在没有循环的情况下执行此操作的任何选项?

3 个答案:

答案 0 :(得分:9)

只需添加空列,然后执行UPDATE

ALTER TABLE YourTable
ADD GUID UNIQUEIDENTIFIER

UPDATE YourTable
SET GUID = NEWID()

答案 1 :(得分:8)

将GUID列添加为NOT NULL,默认值为NEWID()

ALTER TABLE
    [dbo].[Text]

ADD [GUID] uniqueidentifier NOT NULL DEFAULT NEWID()

这将自动填充现有行,插入记录时无需指定guid。

答案 2 :(得分:0)

您可以添加列并更新值或创建具有NEWID()的默认约束的持久列

create table test (id int identity
, column1 uniqueidentifier not null default newid()
, column2 varchar(10))

insert into test(column2)
values ('a')

select * from test

alter table test
add column3 uniqueidentifier

update test
set column3 = NEWID()