데이터베이스를 관리하다 보면 열을 변경해야 하는 경우가 발생합니다.
제 경험에 의하면, 열에 저장되는 값의 크기가 초기보다 커져서 현재의 데이터 타입으로는 원하는 값을 수용할 수 없어서 길이를 확장하는 경우가 가끔 발생합니다. 그 외에 동일한 데이터가 데이터베이스 내에 중복관리되고 있는데 테이블에 따라 데이터타입이 서로 상이하여 조인 시에 성능 저하가 발생하는 등의 문제가 발생하여 부랴부랴 데이터 타입을 동일하게 맞추는 경우도 아주 가끔이기는 하지만 발생합니다. 또는 NULL 허용으로 관리하였는데 NOT NULL로 변경하고자 하는 경우도 발생합니다.
열을 변경하는 구문은 단순하므로 작업에 어려움은 없을 겁니다.
열 데이터 타입 변경에 소요되는 시간을 사전에 제대로 예측하는 것이 필요합니다. 그를 위해서는 테스트 서버에서 사전에 테스트를 해 본 후에 작업 계획을 수립하고 실행할 것을 권고합니다.
그리고 ALTER COLUMN 의 대상이 되는 열에 인덱스가 존재한다면 우선 인덱스를 삭제한 후 ALTER COLUMN을 실행해야 합니다.
[따라하기] nchar(3) 데이터 형식을 char(10) 데이터 형식으로 변경하기 |
USE Sample; GO SELECT * INTO ProductTest FROM AdventureWorks.Production.Product; GO EXEC sp_columns ProductTest; GO CREATE INDEX IDX_1 ON ProductTest (SizeUnitMeasureCode); GO /* 메시지 5074, 수준 16, 상태 1, 줄 1 인덱스 'IDX_1'은(는) 열 'SizeUnitMeasureCode'에 종속되어 있습니다. 메시지 4922, 수준 16, 상태 9, 줄 1 하나 이상의 개체가 이 열에 액세스하므로 ALTER TABLE ALTER COLUMN SizeUnitMeasureCode이(가) 실패했습니다. */ DROP INDEX ProductTest.IDX_1; GO ALTER TABLE ProductTest ALTER COLUMN SizeUnitMeasureCode char(3); GO |
'연구개발 > SQL2005' 카테고리의 다른 글
[SQL 2005 GUIDE] 테이블 정보 확인하기 (0) | 2009.07.06 |
---|---|
[SQL 2005 GUIDE] 데이터베이스 개체(OBJECT) 이름 변경하기 (0) | 2009.07.06 |
[SQL 2005 GUIDE] 테이블 변경 - 열 삭제하기 (0) | 2009.07.06 |
[SQL 2005 GUIDE] 테이블 변경 - 열 추가하기 (0) | 2009.07.06 |
[SQL 2005 GUIDE] 테이블 옵션 - large value (0) | 2009.07.06 |