2012-12-18 3 views
0

SQL Server에서 열의 데이터 형식을 변경해야합니다. 그렇게 할 때 제약은 무엇입니까?SQL Server에서 열의 데이터 형식 변경

색인 및 기타 제약 조건을 제거해야한다는 것을 알고 있습니까?

null 체크를 제거해야합니까?

데이터 유형을 변경하기 전에 다른 사항을 확인해야합니까?

제약 조건을 제거하고 테이블을 변경 한 다음 제약 조건을 다시 추가해야합니다.

이렇게하는 것이 올바른 방법입니까? 여기 UX_1_COMPUTATION

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); 

Computation는 테이블 이름이고 ComputationID 열 이름, 고유 인덱스 이름이다.

이 정보가 맞습니까? 더 이상의 열이 참여하는 composite index, 나는 그것으로 어떻게

Update

을 처리 할 거기 그렇다면? 이러한 인덱스에는 기본 키가 아닌 기본 키 열이 포함됩니다.

나는 다음과 같은 예외를

SQL 몸값 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: 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 '. 

감사를 던지고있다

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); 

다음과 같은 성명,

을 실행했을 때3210

-Sam

+1

당신이에서를 변경할 필요가 알고 도움이 될, 그리고 것이 무엇에? 전에 유형은 무엇입니까? 이후에 있어야 할 것은 무엇입니까? 이 변경은 ** nullable **'NVARCHAR (25)'열을 생성합니다 - 원하는 것입니까? –

+0

@marc_s null이 아닌 열입니다. not null 열을 생성해야합니다. – Sam

+0

그래서 'ALTER TABLE dbo.Computation과 같아야합니다. ALTER COLUMN ComputationID NVARCHAR (25) not null'right? 인덱스의 문법에는 아무런 문제가 없습니까? – Sam

답변

2

귀하의 현재 진술에 따라 해당 열은 null로 변경 될 수 있습니다. NVARCHAR(25) 열이 원하는 것입니까? 당신이 당신의 열이 NON NULL을 될 것입니다 있는지 확인하려면

, 당신은 명시 적으로 진술해야한다 :

ALTER TABLE dbo.Computation 
ALTER COLUMN ComputationID NVARCHAR(25) NOT NULL 
+4

** created ** 컬럼의 경우, 지정되지 않은 경우의 디폴트 Nullability는'SET ANSI_NULL_DFLT_ON' 및 'ANSI 널 기본값'데이터베이스 옵션에 따라 다릅니다. 변경되지 않은 열에 대해서는 원래 'NOT NULL'이라도 'NULL'이됩니다. –

+0

@MartinSmith : 업데이트 해 주셔서 감사합니다. 추가 전문가 수준의 조언을 얻으 려면 항상 좋습니다! :-) –