프로그래밍/Ms-sql

[MSSQL] 필드 속성 값 변경 + PK 해제 + 설정

쿠샨 2011. 4. 28. 13:34


작업을 하다 플드 속성 값을 변경 해야 할 일이 생겼다.

기본적으로 필드 속성 변경 하는 mssql 구문은

ALTER TABLE [테이블명] ALTER COLUMN [COLUMN명] [데이터타입] 이다.

Ex) Alter Table Code_Master Alter Column code_type Varchar(30) Not null;

위와 같이 실행 시켜 보니.....
종속성 문제로 변경 할 수가 없다는 메세지가 떴다. 이유는...code_type 필드가 Primary key 로 지정 되어 있어서였다.

그래서...... 
Primary Key 해제 -> 필드 속성 변경 -> Primary Key 셋팅 으로 진행 하기로 하였다.

필드 속성 변경법은 위에서 설명 했으며

Primary Key 해제는

ALTER TABLE [테이블명] DROP [Primary Key 제약조건명]

Ex) Alter Table Code_Master drop constraint PK__Code_Mas__B02ABB936B24EA82

       * 제약조건명 확인 방법
            - sp_helpindex  이용    (sp_helpindex [테이블명])
               Ex) EXEC sp_helpindex Code_Master ;

            - 실행 화면

           (index_name 이 바로 위에 들어갈 Primary Key 제약조건명 이다.)

Primary Key 설정은

ALTER TABLE [테이블명] ADD CONSTRAINT [PK 제약조건명] PRIMARY KEY [ (필드명) ]

Ex) Alter Table Code_Master ADD constraint PK__Code_Master Primary Key ( code_type);

여기서 주의 할 점은
 - 기존 데이터에 NULL 이 존재 하면 안됨.
 - null 허용이 체크 되지 않아야 한다. 

 - 중복되는 값이 들어 있지 않아야 한다. 

기본 키를 정의하려면 다음과 같은 순서로 진행
1)데이터베이스 테이블 디자인에서 기본 키로 정의하려는 데이터베이스 열에 대한 행 선택자를 클릭한다. 여러 열을 선택하려면 Ctrl 키를 누른 채로 다른 열에 대한 행 선택자를 클릭한다.

2)열의 행 선택자를 마우스 오른쪽 단추로 클릭하고 기본 키 설정을 선택한다. 기본 키 인덱스는 테이블 이름 앞에 "PK_"로 시작하는 이름이 부여되며 속성 페이지의 인덱스/키 탭에서 자동으로 만들어진다. 

3)기본 키를 다시 정의하려면 새로운 기본 키를 만들기 전에 먼저 기존의 기본 키에 대한 모든 관계를 삭제해야 한다. 이 과정의 일부로서 기존의 관계들이 자동으로 삭제될 것이라는 경고 메시지가 표시된다. 

4)기본 키 열은 행 선택기의 기본 키 기호로 식별됩니다. 키의 모습은 열쇠의 모습을 하고 테이블 열 왼쪽에 나타난다. 

5)기본 키가 둘 이상의 열로 구성된 경우 한 열에는 중복된 값을 사용할 수 있지만 기본 키의 모든 열에 있는 값들의 각 조합은 고유해야 한다.