我有一个名为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然后设置它。
由于
答案 0 :(得分:4)
你是正确的方式。只需删除当前列并添加新列,默认为newsequantialid()。
Alter table drop column createdby
Go
Alter table add createdby uniqueidentifier not null default (newsequantialid()) with values
Go