我必须更改 SQL 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 '.
谢谢,
-山姆