如何将填充的表列的数据类型从int更改为UNIQUEIDENTIFIER?

时间:2015-04-05 06:56:17

标签: sql-server sql-server-2012

我有一个名为AdminTest的表,其中CreatedBy列设置为int。在这一点上,我并不真正关心价值。值可以是1,2或任何值。

我想将列更改为uniqueidentifier:

 ALTER TABLE [dbo].[AdminTest] ALTER COLUMN [CreatedBy] UNIQUEIDENTIFIER NOT NULL;

但这失败了。

我有什么方法可以做出这种改变。也许有多个SQL DDL语句?我想创建一个新的Sequential GUID,然后将我的表的每一行的值设置为这个新的Sequential GUId。如果值完全相同则可以。

现在,我能想到这样做的唯一方法是。删除列,添加列,然后将其设置为新值。这听起来是否合理?如果是这样,我怎么能这样做?对不起,我的SQL知识不是很好。到目前为止我只是使用VS2013 GUI来尝试。我知道如何打开SQL查询窗口,但不知道如何创建顺序ID然后设置它。

由于

1 个答案:

答案 0 :(得分:4)

你是正确的方式。只需删除当前列并添加新列,默认为newsequantialid()。

Alter table drop column createdby
Go

Alter table add createdby uniqueidentifier not null default (newsequantialid()) with values
Go