我必须更改Server中列的数据类型。那么,做这些事情的限制是什么呢?
我知道我必须删除索引和其他限制?
我必须删除非空检查吗?
在更改数据类型之前,还需要检查哪些其他内容?
我需要删除约束并修改表,然后再添加约束。
这样做对吗?
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,我如何处理它?这些索引包含主键列和非主键列。
当我尝试执行以下语句时
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
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
发布于 2012-12-18 13:59:21
您的当前语句将将该列更改为可为空的NVARCHAR(25)列--这是您想要的吗?
如果您想确保您的列将是NON NULL,则必须显式地声明如下:
ALTER TABLE dbo.Computation
ALTER COLUMN ComputationID NVARCHAR(25) NOT NULLhttps://stackoverflow.com/questions/13934265
复制相似问题