ALTER TABLE(SQL Server Compact)

열 및 제약 조건을 수정, 추가 또는 삭제하여 테이블 정의를 수정합니다.


ALTER TABLE table_name
    ALTER COLUMN column_name 
   {
    type_name[({precision[.scale]})][NULL|NOT NULL]
   {DROP DEFAULT 
   | SET DEFAULT constant_expression 
   | IDENTITY [ ( seed , increment ) ]
   } 
| ADD 
   { < column_definition > | < table_constraint > } [ ,...n ] 
| DROP 
   { [ CONSTRAINT ] constraint_name 
   | COLUMN column }
] }
< column_definition > ::= 
   { column_name data_type } 
   [ [ DEFAULT constant_expression ] 
      | IDENTITY [ ( seed , increment ) ] 
   ] 
   [ROWGUIDCOL]
   [ < column_constraint > ] [ ...n ] ]
< column_constraint > ::= 
   [ NULL | NOT NULL ] 
   [ CONSTRAINT constraint_name ] 
   { 
      | { PRIMARY KEY | UNIQUE } 
      | REFERENCES ref_table [ (ref_column) ] 
      [ ON DELETE { CASCADE | NO ACTION | SET DEFAULT |SET NULL } ] 
      [ ON UPDATE { CASCADE | NO ACTION | SET DEFAULT |SET NULL } ]
   }
< table_constraint > ::= 
   [ CONSTRAINT constraint_name ] 
   { [ { PRIMARY KEY | UNIQUE } 
      { ( column [ ,...n ] ) } 
      | FOREIGN KEY 
        ( column [ ,...n ] )
        REFERENCES ref_table [ (ref_column [ ,...n ] ) ] 
      [ ON DELETE { CASCADE | NO ACTION | SET DEFAULT |SET NULL } ] 
      [ ON UPDATE { CASCADE | NO ACTION | SET DEFAULT |SET NULL } ] 
   }

table_name

수정할 테이블의 이름입니다.

참고 참고

테이블 이름은 식별자 규칙에 맞아야 합니다. table_name은 데이터베이스 내에서 고유해야 합니다. table_name에는 최대 128자를 사용할 수 있습니다.

ALTER COLUMN

특정 열을 변경 또는 수정하도록 지정합니다.

column_name

테이블의 열 이름입니다. 열 이름은 식별자 규칙에 맞아야 하고 해당 테이블에서 고유해야 합니다.

data_type

열 데이터 형식을 지정합니다. 데이터 형식에 대한 자세한 내용은 데이터 형식을 참조하십시오.

DEFAULT

삽입 동작 중에 값이 명시적으로 제공되지 않을 경우 열에 제공되는 값을 지정합니다. DEFAULT 정의는 IDENTITY 속성에서 정의한 열을 제외한 모든 열에 적용할 수 있습니다. 테이블이 삭제되면 DEFAULT 정의가 제거됩니다. 문자열 또는 날짜 함수와 같은 상수 값만 기본값으로 사용할 수 있습니다.

IDENTITY

새 열이 ID 열임을 나타냅니다. 테이블에 새 행이 추가되면 Microsoft SQL Server Compact에서는 열에 사용할 증가값을 제공합니다. ID 열은 일반적으로 PRIMARY KEY 제약 조건과 함께 사용하여 테이블의 고유 행 식별자 역할을 합니다. IDENTITY 속성은 int 열에만 할당할 수 있습니다. 각 테이블에는 한 개의 ID 열만 만들 수 있습니다. ID 열에는 바인딩된 기본값 및 DEFAULT 제약 조건을 사용할 수 없습니다. 초기값과 증가값을 모두 지정하거나 모두 지정하지 않아야 합니다. 지정하지 않으면 기본값 (1,1)이 사용됩니다.

seed

테이블에 로드되는 첫 번째 행에 사용되는 값입니다.

increment

로드된 이전 행의 ID 값에 추가되는 증가값입니다.

ADD

열 정의 또는 테이블 제약 조건을 하나 이상 추가하도록 지정합니다.

DROP { [CONSTRAINT] constraint_name| COLUMN }

constraint_name 또는 column_name을 테이블에서 제거하도록 지정합니다.

ROWGUIDCOL

새 열이 행 전역 고유 식별자 열임을 나타냅니다. 각 테이블 마다 uniqueidentifier 열만 ROWGUIDCOL 열로 지정할 수 있습니다. ROWGUIDCOL 속성은 uniqueidentifier 열에만 할당할 수 있습니다.

ROWGUIDCOL 은 테이블에 삽입된 새 행의 값을 자동으로 생성합니다.

NULL | NOT NULL

열에서 Null 값이 허용되는지 여부를 지정하는 키워드입니다. NULL은 엄격하게 말하면 제약 조건은 아니지만 NOT NULL과 동일한 방식으로 지정할 수 있습니다.

CONSTRAINT

PRIMARY KEY, UNIQUE 또는 FOREIGN KEY 제약 조건에 대한 정의의 시작을 나타내는 선택적 키워드입니다. 제약 조건은 데이터 무결성을 강화하고 테이블 및 해당 열에 대한 특정 유형의 인덱스를 만드는 특수한 속성입니다.

constraint_name

제약 조건의 이름입니다. constraint_name은 선택 사항이며 데이터베이스 내에서 고유해야 합니다. constraint_name을 지정하지 않으면 SQL Server Compact에서 제약 조건 이름을 생성합니다.

PRIMARY KEY

고유 인덱스를 사용하여 특정 열에 대한 엔터티 무결성을 강화하는 제약 조건입니다. 각 테이블에는 한 개의 PRIMARY KEY 제약 조건만 만들 수 있습니다.

UNIQUE

고유 인덱스를 사용하여 특정 열에 대한 엔터티 무결성을 제공하는 제약 조건입니다. UNIQUE 제약 조건의 열은 NULL이 될 수 있으나, NULL 값은 열당 한 개씩만 허용됩니다. 테이블에는 여러 개의 UNIQUE 제약 조건이 있을 수 있습니다.

참고 참고

SQL Server Compact에서는 인덱스를 사용하여 PRIMARY KEY 및 UNIQUE 제약 조건을 적용할 수 있습니다. 이 동작에 의존하거나 제약 조건의 일부로 생성되는 인덱스를 수정하지 않는 것이 좋습니다.

FOREIGN KEY...REFERENCES

열에 있는 데이터의 참조 무결성을 제공하는 제약 조건입니다. FOREIGN KEY 제약 조건을 사용하려면 열의 각 값이 참조 테이블의 지정된 열에 있어야 합니다.

ref_table

FOREIGN KEY 제약 조건이 참조하는 테이블의 이름입니다.

(ref_column [ ,... n])

FOREIGN KEY 제약 조건이 참조하는 테이블의 열 또는 열 목록입니다.

ON DELETE {CASCADE | NO ACTION |SET DEFAULT | SET NULL}

생성된 테이블의 행에 참조 관계가 있고 참조된 행이 부모 테이블에서 삭제된 경우 해당 행에서 수행되는 동작을 지정합니다. 기본값은 NO ACTION입니다. 자세한 내용은 이 항목의 "주의" 섹션을 참조하십시오.

ON UPDATE {CASCADE | NO ACTION | SET DEFAULT | SET NULL}

생성된 테이블의 행에 참조 관계가 있고 참조된 행이 부모 테이블에서 업데이트된 경우 해당 행에서 수행되는 동작을 지정합니다. 기본값은 NO ACTION입니다. 자세한 내용은 이 항목의 "주의" 섹션을 참조하십시오.

column

테이블 제약 조건에서 괄호 속에 들어 있는 열 또는 열 목록으로, 제약 조건 정의에 사용되는 열을 나타냅니다.

n

이전 항목이 n번 반복될 수 있음을 나타내는 자리 표시자입니다.

ON DELETE 또는 ON UPDATE의 경우 CASCADE 옵션을 지정하면 해당 참조된 행이 부모 테이블에서 업데이트되는 경우 참조 테이블에서 행이 업데이트됩니다. NO ACTION을 지정할 경우 SQL Server Compact에서 오류를 반환하며 부모 테이블의 참조된 행에서 업데이트 동작이 롤백됩니다.

예를 들어 데이터베이스에 A와 B라는 두 개의 테이블이 있다고 가정해 보겠습니다. 테이블 A는 테이블 B와 참조 관계를 갖고 있습니다. 즉, A.ItemID 외래 키는 B.ItemID 기본 키를 참조합니다.

UPDATE 문이 테이블 B의 행에서 실행되고 A.ItemID에 대해 ON UPDATE CASCADE 동작이 지정되면 SQL Server Compact에서는 테이블 A에서 하나 이상의 종속 행을 검사합니다. 테이블 A에 종속 행이 있으면 테이블 B의 참조된 행과 같이 모두 업데이트됩니다.

또는 NO ACTION을 지정할 경우 SQL Server Compact에서 오류를 반환하며 테이블 A에 참조하는 행이 하나 이상 있으면 테이블 B의 참조된 행에서 업데이트 동작이 롤백됩니다.

1. ID 열에서 초기값 및 증가값 변경

다음 예에서는 ID 열에서 초기값 및 증가값을 변경합니다.

CREATE TABLE MyCustomers (CustID INTEGER IDENTITY (100,1) PRIMARY KEY, CompanyName NvarChar (50));

INSERT INTO MyCustomers (CompanyName) VALUES ('A. Datum Corporation');

ALTER TABLE MyCustomers ALTER COLUMN CustId IDENTITY (200, 2);

2. 열에 기본값 추가

다음 예에서는 기본값을 갖도록 CompanyName 열을 수정합니다.

ALTER TABLE MyCustomers ALTER COLUMN CompanyName SET DEFAULT 'A. Datum Corporation'

3. 열에서 기본값 삭제

다음 예에서는 기본값을 갖지 않도록 CompanyName 열을 수정합니다.

ALTER TABLE MyCustomers ALTER COLUMN CompanyName DROP DEFAULT
표시: