首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Server中更改列的数据类型

在Server中更改列的数据类型
EN

Stack Overflow用户
提问于 2012-12-18 13:39:25
回答 1查看 8.3K关注 0票数 0

我必须更改Server中列的数据类型。那么,做这些事情的限制是什么呢?

我知道我必须删除索引和其他限制?

我必须删除非空检查吗?

在更改数据类型之前,还需要检查哪些其他内容?

我需要删除约束并修改表,然后再添加约束。

这样做对吗?

代码语言:javascript
复制
DROP INDEX UX_1_COMPUTATION ON  dbo.Computation 

ALTER TABLE dbo.Computation
ALTER COLUMN ComputationID NVARCHAR(25) 

CREATE UNIQUE INDEX UX_1_COMPUTATION ON dbo.Computation (ComputationID);

这里,UX_1_COMPUTATION是唯一的索引名,Computation是表名,ComputationID是列名。

这是对的吗?

Update

因此,如果有一个涉及多个列的composite index,我如何处理它?这些索引包含主键列和非主键列。

当我尝试执行以下语句时

代码语言:javascript
复制
DROP INDEX UX_2_COMPUTATION ON  dbo.Computation 

ALTER TABLE dbo.Computation
ALTER COLUMN ComputationID NVARCHAR(25) 

CREATE UNIQUE INDEX UX_2_COMPUTATION ON dbo.Computation (ComputationID , ComputeGuid);

它将引发以下异常

SQL索引UX_2_COMPUTATION

代码语言:javascript
复制
        ON dbo.Computation

        ALTER TABLE dbo.Computation

        ALTER COLUMN ComputationID  NVARCHAR(10) Not Null

        CREATE INDEX UX_2_COMPUTATION 

        ON dbo.Computation (ComputationID , ComputeGuid): The object 

'PK_Computation' is dependent on column 'ComputationID '.:

      Caused By: Error executing SQL DROP INDEX UX_2_COMPUTATION 

        ON dbo.Computation

        ALTER TABLE dbo.Computation

        ALTER COLUMN ComputationID  NVARCHAR(10) Not Null

        CREATE INDEX UX_2_COMPUTATION 

        ON dbo.Computation (ComputationID , ComputeGuid): The object 

'PK_Computation' is dependent on column 'ComputationID '.:

      Caused By: The object 'PK_Computation' is dependent on column 'ComputationID '.

谢谢,

-Sam

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-12-18 13:59:21

您的当前语句将将该列更改为可为空的NVARCHAR(25)列--这是您想要的吗?

如果您想确保您的列将是NON NULL,则必须显式地声明如下:

代码语言:javascript
复制
ALTER TABLE dbo.Computation
ALTER COLUMN ComputationID NVARCHAR(25) NOT NULL
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13934265

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档