

# `ALTER TABLE`
<a name="alter-table-syntax-support"></a>

`ALTER TABLE`은 테이블의 정의를 변경합니다.

```
ALTER TABLE [ IF EXISTS ] [ ONLY ] name [ * ]
    action [, ... ]
ALTER TABLE [ IF EXISTS ] [ ONLY ] name [ * ]
    RENAME [ COLUMN ] column_name TO new_column_name
ALTER TABLE [ IF EXISTS ] [ ONLY ] name [ * ]
    RENAME CONSTRAINT constraint_name TO new_constraint_name
ALTER TABLE [ IF EXISTS ] name
    RENAME TO new_name
ALTER TABLE [ IF EXISTS ] name
    SET SCHEMA new_schema

where action is one of:

    ADD [ COLUMN ] [ IF NOT EXISTS ] column_name data_type
    ADD table_constraint_using_index
    ALTER [ COLUMN ] column_name { SET GENERATED { ALWAYS | BY DEFAULT } | SET sequence_option | RESTART [ [ WITH ] restart ] } [...]
    ALTER [ COLUMN ] column_name DROP IDENTITY [ IF EXISTS ]
    OWNER TO { new_owner | CURRENT_ROLE | CURRENT_USER | SESSION_USER }

and table_constraint_using_index is:

    [ CONSTRAINT constraint_name ]
    UNIQUE USING INDEX index_name
```

## ID 열 작업
<a name="alter-table-identity-columns"></a>

**`SET GENERATED { ALWAYS | BY DEFAULT }` / `SET {{sequence_option}}` / `RESTART`**  
이러한 양식은 열이 ID 열인지 아니면 기존 ID 열의 생성 속성을 변경하는지 여부를 변경합니다. 세부 정보는 [`CREATE TABLE`](create-table-syntax-support.md) 섹션을 참조하세요. `SET DEFAULT`와 마찬가지로 이러한 형식은 후속 `INSERT` 및 `UPDATE` 명령의 동작에만 영향을 미치며 테이블에 이미 있는 행은 변경되지 않습니다.  
{{sequence\_option}}은 `INCREMENT BY`와 같이 [`ALTER SEQUENCE`](alter-sequence-syntax-support.md)에서 지원하는 옵션입니다. 이러한 형식은 기존 ID 열의 기반이 되는 시퀀스를 변경합니다.

**`DROP IDENTITY [ IF EXISTS ]`**  
이 양식은 열에서 ID 속성을 제거합니다. `DROP IDENTITY IF EXISTS`가 지정되어 있고 열이 ID 열이 아닌 경우 오류가 발생하지 않습니다. 이 경우 대신 알림이 발행됩니다.

## 제약 조건 작업 추가
<a name="alter-table-add-constraint"></a>

**`ADD {{table_constraint_using_index}}`**  
이 양식은 기존 고유 인덱스를 기반으로 테이블에 새 `UNIQUE` 제약 조건을 추가합니다. 인덱스의 모든 열이 제약 조건에 포함됩니다.  
인덱스는 `VALID` 상태여야 합니다. 인덱스가 현재 빌드 중인 동안 해당 인덱스를 사용하여 고유한 제약 조건을 추가하는 것은 지원되지 않습니다.  
제약 조건의 이름을 지정하면 제약 조건 이름과 일치하도록 인덱스의 이름이 변경됩니다. 그렇지 않으면 제약 조건의 이름이 인덱스와 동일하게 지정됩니다.  
이 명령이 실행된 후 인덱스는 일반 `CREATE UNIQUE INDEX ASYNC` 명령으로 인덱스를 빌드한 것과 동일한 방식으로 제약 조건에 의해 "소유"됩니다. 특히, 제약 조건을 삭제하면 인덱스도 사라집니다.