이 문서는 지원되지 않는 PostgreSQL 버전에 대한 것입니다.
당신은 다음과 같은 페이지를 보고 싶을 수도 있습니다.스포츠 토토 베트맨 PostgreSQL : 문서 : 17 : Alter Table버전 또는 위에 나열된 다른 지원 버전 중 하나를 사용하세요.

변경 표

이름

ALTER TABLE -- 토토 정의 변경

시놉시스

토토 변경 [ 존재하는 경우 ] [ 전용 ]이름 [ * ]
    액션[, ... ]
ALTER TABLE [ 존재하는 경우 ] [ 전용 ]이름[ * ]
    [ 열 ] 이름 바꾸기열_이름받는 사람new_column_name토토 변경 [ 존재하는 경우 ] [ 전용 ]이름[ * ]
    제약조건 이름 바꾸기제약_이름받는 사람new_constraint_name토토 변경 [ 존재하는 경우 ]이름이름을 다음으로 변경:new_name토토 변경 [ 존재하는 경우 ]이름스키마 설정new_schema

어디에서액션다음 중 하나입니다:추가 [ 열 ]열_이름 데이터_유형[ 수집조합 ] [ column_constraint[ ... ] ]
    DROP [ 열 ] [ 존재하는 경우 ]열_이름[ 제한 | 캐스케이드 ]
    변경 [ 열 ]열_이름[ 데이터 설정 ] 유형데이터_유형[ 수집조합] [ 사용 중표현]
    변경 [ 열 ]컬럼_이름기본값으로 설정표현변경 [ 열 ]열_이름기본값 삭제
    변경 [ 열 ]열_이름설정 | 삭제  NULL이 아님
    변경 [ 열 ]열_이름통계 설정정수변경 [ 열 ]컬럼_이름설정(속성_옵션 = [, ... ] )
    변경 [ 열 ]열_이름재설정(속성_옵션[, ... ] )
    변경 [ 열 ]열_이름저장소 설정  일반 | 외부 | 확장 | 메인 
    추가table_constraint[ 유효하지 않음 ]
    추가table_constraint_using_index제약조건 확인제약_이름제약조건 삭제 [ 존재하는 경우 ]제약_이름[ 제한 | 캐스케이드 ]
    트리거 비활성화 [trigger_name| 전체 | 사용자 ]
    트리거 활성화 [trigger_name| 전체 | 사용자 ]
    복제본 트리거 활성화trigger_name항상 트리거 활성화trigger_name규칙 비활성화rewrite_rule_name규칙 활성화rewrite_rule_name복제본 규칙 활성화rewrite_rule_name항상 규칙 활성화rewrite_rule_name클러스터 켜짐색인_이름클러스터 없이 설정
    OIDS로 설정
    OIDS 없이 설정
    설정(storage_parameter = [, ... ] )
    재설정(storage_parameter[, ... ] )
    상속parent_table상속 없음parent_table유형_이름NOT
    소유자new_owner토토스페이스 설정new_tablespace

그리고table_constraint_using_index다음과 같습니다:[ 제약제약_이름]
     고유 | 기본 키  인덱스 사용색인_이름[ 연기 가능 | 연기 불가 ] [ 처음에는 연기됨 | 처음에는 즉시 ]

설명

토토 변경의 정의를 변경합니다. 기존 토토. 여러 가지 하위 양식이 있습니다.

열 추가

이 양식은 동일한 구문을 사용하여 토토에 새 열을 추가합니다. 와 같이PostgreSQL : 문서 : 9.3 : 스포츠 토토 작성.

열 삭제 [ 존재하는 경우 ]

이 양식은 테이블에서 열을 삭제합니다. 인덱스와 테이블 열과 관련된 제약 조건은 다음과 같이 자동으로 삭제됩니다. 음. 당신은 말해야 할 것입니다캐스케이드만약 테이블 외부의 모든 항목은 열에 따라 달라집니다. 예를 들어 다음과 같습니다. 외래 키 참조 또는 뷰. 만일IF 존재함이(가) 지정되었지만 열이 존재하지 않습니다. 오류는 없습니다. 던져졌다. 이 경우 대신 통지가 발행됩니다.

존재하는 경우

토토이 존재하지 않는 경우 오류를 발생시키지 마십시오. 공지사항은 이 경우 발행되었습니다.

데이터 유형 설정

이 양식은 테이블의 열 유형을 변경합니다. 인덱스 및 열과 관련된 간단한 테이블 제약 조건은 자동으로 원래 열 유형을 다시 구문 분석하여 새 열 유형을 사용하도록 변환되었습니다. 제공된 표현식 선택사항콜레이트절은 새 열에 대한 데이터 정렬을 지정합니다. 생략된 경우 데이터 정렬은 새 열 유형의 기본값입니다. 선택사항사용 중절은 계산 방법을 지정합니다. 이전 열 값의 새 열 값입니다. 생략하면 기본 변환 이전 데이터 유형에서 새 데이터 유형으로 캐스트되는 할당과 동일합니다. 갑사용 중다음이 있는 경우 절을 제공해야 합니다. 이전 유형에서 새 유형으로 암시적 또는 할당 캐스팅이 없습니다.

SET/드롭 기본값

이 양식은 열의 기본값을 설정하거나 제거합니다. 기본값은 이후에만 적용됩니다.삽입또는업데이트명령; 이미 토토에 있는 행이 변경되지는 않습니다.

SET/삭제하지 마세요 NULL

이 양식은 열이 null을 허용하도록 표시되는지 여부를 변경합니다. 값을 사용하거나 null 값을 거부합니다. 당신은 사용할 수 있습니다NULL이 아닌 설정열에 null이 없는 경우 값.

통계 설정

이 양식은 다음에 대한 열별 통계 수집 목표를 설정합니다. 후속PostgreSQL : 문서 : 9.3 : 토토 커뮤니티작업. 는 목표는 0~10000 범위에서 설정할 수 있습니다. 또는 다음으로 설정하십시오. -1은 시스템 기본 통계 대상을 사용하여 되돌립니다. (default_statistics_target). 다음의 통계 사용에 대한 자세한 내용은PostgreSQL쿼리 플래너, 참조섹션 14.2.

설정(속성_옵션 = [, ... ] )
재설정(속성_옵션 [, ... ] )

이 양식은 속성별 옵션을 설정하거나 재설정합니다. 현재, 정의된 속성별 옵션만 있습니다.n_distinct그리고n_distinct_inherited, 이는 이후에 수행된 고유 값 수 추정분석작업.n_distinct토토 통계에 영향을 미칩니다. 그 자체, 동안n_distinct_inherited영향을 미칩니다 토토과 상속을 위해 수집된 통계 아이들. 양수 값으로 설정하면,분석열에 정확히 다음이 포함되어 있다고 가정합니다. 널이 아닌 고유한 값의 지정된 수. a로 설정하면 -1보다 크거나 같아야 하는 음수 값분석다음의 수가 있다고 가정합니다. 열의 고유한 Null이 아닌 값은 크기가 선형입니다. 테이블; 정확한 개수는 다음을 곱하여 계산됩니다. 주어진 숫자의 절대값으로 추정된 테이블 크기. 에 대한 예를 들어 -1 값은 열의 모든 값이 다음과 같음을 의미합니다. -0.5 값은 각 값이 나타남을 의미합니다. 평균적으로 두 번. 이는 테이블의 크기가 클 때 유용할 수 있습니다. 행 수를 곱하므로 시간이 지남에 따라 변경됩니다. 테이블의 작업은 쿼리 계획 시간까지 수행되지 않습니다. 지정 고유 값 수 추정으로 되돌리려면 값을 0으로 설정하세요. 일반적으로. 다음의 통계 사용에 대한 자세한 내용은PostgreSQL쿼리 플래너, 참조PostgreSQL : 문서 : 9.3 : 무지개 토토 사용하는 무지개 토토.

저장소 설정

이 양식은 열의 저장 모드를 설정합니다. 이는 제어 이 열이 인라인으로 유지되는지 보조 열로 유지되는지 여부토스트테이블, 그리고 데이터를 압축할지 여부를 결정합니다.일반다음과 같은 고정 길이 값에 사용해야 합니다.정수인라인이며 압축되지 않습니다.메인인라인 압축 가능한 데이터용입니다.외부압축되지 않은 외부 데이터용이며확장됨is for external, compressed data.확장대부분의 데이터에 대한 기본값입니다. 비를 지원하는 유형일반저장. 사용 의외부하위 문자열 작업을 수행합니다. 매우 큰 경우텍스트그리고바이테아값이 더 빠르게 실행되지만 증가된 페널티가 있습니다. 저장 공간. 참고하세요저장소 설정그 자체로는 테이블의 어떤 것도 변경하지 않으며 단지 향후 테이블 업데이트 시 추구할 전략입니다. 참조섹션 58.2더 많은 정보를 원하시면.

추가table_constraint[ 유효하지 않음 ]

이 양식은 동일한 구문을 사용하여 테이블에 새로운 제약 조건을 추가합니다 와 같이PostgreSQL : 문서 : 9.3 : 스포츠 토토 작성및 옵션유효하지 않음, 현재만 허용됩니다. 외래 키 및 CHECK 제약 조건의 경우. 제약 조건이 표시된 경우유효하지 않음, 잠재적으로 긴 초기 테이블의 모든 행이 제약 조건을 충족하는지 확인하십시오. 건너뜁니다. 제약조건은 계속해서 적용됩니다. 후속 삽입 또는 업데이트(즉, 다음이 없으면 실패합니다. 외부 테이블의 경우 참조된 테이블에서 일치하는 행입니다. 열쇠; 새 행이 지정된 행과 일치하지 않으면 실패합니다. 제약 조건을 확인하세요). 그러나 데이터베이스는 다음을 가정하지 않습니다. 유효성이 검사될 때까지 테이블의 모든 행에 대해 제약 조건이 유지됩니다. 를 사용하여제약조건 확인옵션.

추가table_constraint_using_index

이 양식은 새로운 내용을 추가합니다기본 키또는고유다음을 기반으로 한 테이블에 대한 제약 기존 고유 인덱스. 인덱스의 모든 열은 제약 조건에 포함됩니다.

인덱스는 표현식 열을 가질 수 없으며 부분 인덱스일 수도 없습니다. 또한 기본 정렬 순서가 있는 B-트리 인덱스여야 합니다. 이것들 제한 사항은 인덱스가 다음과 같은 인덱스와 동일함을 보장합니다. 정규직으로 건설되다기본 키 추가또는고유 추가명령.

만약기본 키이 지정되었으며 인덱스의 열이 아직 표시되지 않았습니다.아님 NULL, 그러면 이 명령은 다음을 시도합니다변경 열 설정이 NULL이 아님각 열에 대해. 열에 포함된 내용이 없는지 확인하려면 전체 토토 스캔이 필요합니다. 널. 다른 모든 경우에는 빠른 작업입니다.

제약조건 이름이 제공되면 색인의 이름이 변경됩니다 제약 조건 이름과 일치하도록 합니다. 그렇지 않으면 제약 조건은 다음과 같습니다. 색인과 동일한 이름이 지정됩니다.

이 명령이 실행된 후 색인은"소유"제약에 의해, 마치 인덱스는 일반에 의해 구축되었습니다.기본 추가 키또는고유 추가명령. 에서 특히 제약 조건을 삭제하면 인덱스가 사라지게 됩니다. 너무.

참고:기존 색인을 사용하여 제약 조건을 추가하는 것은 다음과 같습니다. 새로운 제약 조건을 추가해야 하는 상황에 유용합니다. 오랫동안 테이블 업데이트를 차단하지 않고. 그렇게 하려면 다음을 생성하세요. 다음을 사용하는 인덱스동시에 인덱스 생성, 그런 다음 이 구문을 사용하여 공식 제약 조건으로 설치합니다. 아래 예를 참조하세요.

제약조건 확인

이 양식은 외래 키 또는 검사 제약 조건을 검증합니다. 이전에 다음과 같이 생성되었습니다.유효하지 않음, 작성자: 테이블을 스캔하여 해당 행이 없는지 확인합니다. 제약 조건이 충족되지 않습니다. 제약 조건이 다음과 같은 경우 아무 일도 일어나지 않습니다. 이미 유효하다고 표시되었습니다.

검증은 더 큰 테이블에서 긴 프로세스가 될 수 있으며 현재는 가 필요합니다.접속 독점잠금. 는 검증과 초기 생성을 분리하는 것의 가치는 덜 바쁜 시간으로 검증을 연기하거나 다음을 제공하는 데 사용할 수 있습니다. 새로운 오류를 방지하면서 기존 오류를 수정하는 데 추가 시간 오류.

제약조건 삭제 [ 존재하는 경우 ]

이 양식은 토토에 지정된 제약 조건을 삭제합니다. 만일존재하는 경우이 지정되고 제약 조건이 존재하지 않으며 오류가 발생하지 않습니다. 이 경우 통지문이 발행됩니다. 대신.

비활성화/활성화 [ 복제 | 항상 ] 트리거

이 양식은 다음에 속하는 트리거의 실행을 구성합니다. 테이블. 비활성화된 트리거는 여전히 시스템에 알려져 있지만 그렇지 않습니다. 트리거링 이벤트가 발생할 때 실행됩니다. 지연된 트리거의 경우 활성화 상태는 이벤트가 발생할 때가 아니라 이벤트가 발생할 때 확인됩니다. 트리거 기능이 실제로 실행됩니다. 하나는 비활성화하거나 활성화할 수 있습니다 이름으로 지정된 단일 트리거, 테이블의 모든 트리거, 또는 사용자 트리거만(이 옵션은 내부적으로 생성된 트리거를 제외함) 구현하는 데 사용되는 것과 같은 제약 조건 트리거 외래 키 제약 조건 또는 연기 가능한 고유성 및 제외 제약). 내부적으로 생성된 제약조건 비활성화 또는 활성화 트리거에는 수퍼유저 권한이 필요합니다. 그것은 함께 이루어져야한다 물론 제약조건의 무결성은 보장될 수 없으므로 주의하세요. 트리거가 실행되지 않으면 보장됩니다. 방아쇠 발사 메커니즘은 구성 변수의 영향도 받습니다.session_replication_role. 복제 역할이 다음과 같을 때 간단히 활성화된 트리거가 실행됩니다."원산지"(기본값) 또는"지역". 다음과 같이 구성된 트리거복제본 활성화세션이 켜져 있는 경우에만 실행됩니다."복제본"모드 및 트리거 구성됨 와 같이항상 활성화다음과 관계없이 실행됩니다. 현재 복제 모드.

비활성화/활성화 [ 복제 | 항상 ] 규칙

이 양식은 다음에 속하는 다시 쓰기 규칙의 실행을 구성합니다. 테이블. 비활성화된 규칙은 여전히 시스템에 알려져 있지만 그렇지 않습니다. 쿼리 재작성 중에 적용됩니다. 의미론은 다음과 같습니다. 비활성화/활성화 된 트리거. 이 구성은 다음에 대해 무시됩니다.ON 선택26625_26756

클러스터 켜짐

이 양식은 미래를 위한 기본 색인을 선택합니다클러스터작업. 실제로는 그렇지 않습니다 테이블을 다시 클러스터링합니다.

클러스터 없이 설정

이 양식은 가장 최근에 사용한 항목을 삭제합니다.클러스터테이블의 인덱스 사양입니다. 이는 지정하지 않은 향후 클러스터 작업에 영향을 미칩니다. 색인.

OIDS로 설정

이 양식은 다음을 추가합니다.oid시스템 열 토토(참조PostgreSQL : 문서 : 9.3 : 메이저 토토 사이트 열). 토토에 이미 OID가 있으면 아무 작업도 수행하지 않습니다.

이것은 다음과 동일하지 않습니다.추가 COLUMN oid oid; 그러면 발생한 일반 열이 추가됩니다. 이름을 지을 예정이다oid, 시스템 열이 아닙니다.

OIDS 없이 설정

이 양식은 다음을 제거합니다.oid시스템 열 테이블에서. 이는 정확히 다음과 같습니다.DROP COLUMN oid RESTRICT, 단, 그렇지 않습니다. 이미 없으면 불평하세요.oid열.

설정(storage_parameter = [, ... ] )

이 양식은 토토에 대한 하나 이상의 저장 매개변수를 변경합니다. 참조저장 매개변수사용 가능한 매개변수에 대한 자세한 내용을 확인하세요. 참고하세요 이로 인해 테이블 내용이 즉시 수정되지 않습니다. 명령; 매개변수에 따라 다시 작성해야 할 수도 있습니다. 원하는 효과를 얻을 수 있는 테이블입니다. 그것은 다음과 같이 할 수 있습니다.진공이 가득 참, 클러스터또는 다음 형식 중 하나토토 변경토토을 강제로 다시 작성합니다.

참고:그동안토토 생성허용OIDS에 지정됩니다.함께 (storage_parameter)구문,토토 변경치료하지 않음OIDS저장 매개변수로. 대신에OIDS로 설정그리고SET OIDS 없음OID 상태를 변경하는 양식입니다.

재설정(storage_parameter [, ... ] )

이 양식은 하나 이상의 저장 매개변수를 해당 매개변수로 재설정합니다. 기본값. 마찬가지로SET, 테이블 재작성 테이블을 완전히 업데이트하려면 필요할 수도 있습니다.

상속parent_table

이 양식은 대상 테이블을 지정된 테이블의 새 하위로 추가합니다. 부모 테이블. 이후 부모에 대한 쿼리에는 다음이 포함됩니다. 대상 테이블의 레코드입니다. 하위 항목으로 추가하려면 대상 테이블에는 이미 상위 테이블과 동일한 열이 모두 포함되어 있어야 합니다. 추가 열도 있을 수 있습니다). 열에는 일치하는 항목이 있어야 합니다. 데이터 유형 및 해당 유형이 있는 경우NULL이 아님부모에 제약 조건이 있는 경우에도 있어야 합니다NULL이 아님자식의 제약.

또한 모든 항목에 대해 일치하는 하위 토토 제약 조건이 있어야 합니다.확인부모의 제약조건, 제외 상속 불가능으로 표시된 것(즉, 다음으로 생성됨)토토 변경 ... 제약 조건 추가 ... 상속 없음) 무시되는 부모; 모든 하위 테이블 제약 조건이 일치함 상속 불가능으로 표시되어서는 안 됩니다. 현재고유, 기본 키외래 키제약조건은 그렇지 않습니다. 고려되었지만 이는 향후 변경될 수 있습니다.

상속 없음parent_table

이 양식은 다음의 하위 목록에서 대상 테이블을 제거합니다. 지정된 상위 테이블. 상위 테이블에 대한 쿼리는 더 이상 대상 테이블에서 가져온 레코드를 포함하지 않습니다.

OF유형_이름

이 양식은 토토을 복합 유형에 연결합니다.토토 생성그것을 형성했습니다. 테이블의 열 이름 및 유형 목록은 복합형; 의 존재oid시스템 열은 다를 수 있습니다. 테이블은 상속되어서는 안 됩니다. 다른 테이블에서. 이러한 제한 사항은 다음을 보장합니다.토토 생성동등한 테이블을 허용합니다 정의.

NOT

이 형식은 유형이 지정된 토토과 유형을 분리합니다.

소유자

이 양식은 테이블, 시퀀스 또는 보기의 소유자를 다음으로 변경합니다. 지정된 사용자입니다.

토토스페이스 설정

이 양식은 테이블의 토토스페이스를 지정된 토토스페이스로 변경합니다. 토토스페이스를 삭제하고 테이블과 연결된 데이터 파일을 다음 위치로 이동합니다. 새로운 토토스페이스. 테이블의 인덱스가 있는 경우 이동되지 않습니다. 하지만 추가로 별도로 이동할 수 있습니다.토토스페이스 설정명령. 또한 참조하세요토토스페이스 생성.

RENAME

RENAME양식은 이름을 변경합니다 테이블(또는 인덱스, 시퀀스 또는 뷰), 개인의 이름 테이블의 열 또는 테이블의 제약 조건 이름입니다. 거기 저장된 데이터에는 영향을 미치지 않습니다.

스키마 설정

이 양식은 토토을 다른 스키마로 이동합니다. 관련 토토 열이 소유한 인덱스, 제약 조건 및 시퀀스는 이사도 했어요.

다음을 제외한 모든 작업RENAME그리고스키마 설정다음 목록으로 결합될 수 있습니다. 여러 변경 사항을 동시에 적용합니다. 예를 들어, 여러 열을 추가하거나 여러 유형을 변경할 수 있습니다. 단일 명령의 열. 이는 특히 큰 경우에 유용합니다. 테이블 위를 한 번만 통과하면 되기 때문입니다.

사용하려면 토토을 소유해야 합니다.변경 표. 테이블의 스키마를 변경하려면 다음도 필요합니다.생성새 스키마에 대한 권한. 추가하려면 테이블이 상위 테이블의 새 하위 테이블인 경우 상위 테이블을 소유해야 합니다. 테이블도 그렇고. 소유자를 변경하려면 귀하는 직접 또는 새 소유 역할의 간접 구성원이며 해당 역할에는 다음이 있어야 합니다.만들기테이블 스키마에 대한 권한. (이러한 제한은 소유자 변경이 수행되지 않도록 강제합니다. 테이블을 삭제하고 다시 생성하면 수행할 수 없는 모든 작업을 수행할 수 있습니다. 그러나 슈퍼유저는 어떤 테이블의 소유권도 변경할 수 있습니다.) 열을 추가하거나 열 유형을 변경하거나OF절, 다음도 있어야 합니다.사용데이터 유형에 대한 권한입니다.

매개변수

이름

기존 테이블의 이름(선택적으로 스키마 한정) 바꾸다. 만일이(가) 앞에 지정되었습니다. 테이블 이름을 변경하면 해당 토토만 변경됩니다. 만일이 지정되지 않았습니다. 토토과 그 모든 하위 토토(있는 경우)이 변경됩니다. 선택적으로,*테이블 이름 뒤에 지정할 수 있습니다. 하위 테이블이 포함되어 있음을 명시적으로 나타냅니다.

열_이름

새 열 또는 기존 열의 이름.

new_column_name

기존 열의 새 이름.

new_name

테이블의 새 이름입니다.

유형

새 열의 데이터 유형 또는 기존 열의 새 데이터 유형 열.

table_constraint

토토에 대한 새로운 토토 제약 조건.

제약_이름

삭제할 기존 제약조건의 이름.

캐스케이드

삭제된 열에 의존하는 개체를 자동으로 삭제하거나 제약 조건(예: 열을 참조하는 뷰).

제한

열이나 제약조건이 있는 경우 삭제를 거부하세요. 종속 개체. 이것이 기본 동작입니다.

trigger_name

비활성화하거나 활성화할 단일 트리거의 이름.

전체

테이블에 속한 모든 트리거를 비활성화하거나 활성화합니다. (이 트리거 중 하나가 내부적으로 실행되는 경우 수퍼유저 권한이 필요합니다. 생성된 제약 조건 트리거(예: 다음 작업에 사용됨) 외래 키 제약 조건 또는 연기 가능한 고유성을 구현하고 제외 제약 조건.)

사용자

다음을 제외하고 테이블에 속한 모든 트리거를 비활성화 또는 활성화합니다. 내부적으로 생성된 제약 조건 트리거 외래 키 제약 조건이나 연기 가능한 고유성을 구현하는 데 사용됩니다. 및 제외 제약 조건.

색인_이름

테이블에 표시되어야 하는 인덱스 이름 클러스터링.

storage_parameter

테이블 저장 매개변수의 이름.

테이블 저장 매개변수의 새 값. 이것은 매개변수에 따라 숫자 또는 단어.

parent_table

이 토토과 연결하거나 연결 해제할 상위 토토입니다.

new_owner

테이블의 새로운 소유자의 사용자 이름.

new_tablespace

테이블이 이동될 토토스페이스의 이름입니다.

new_schema

테이블이 이동될 스키마의 이름.

참고

핵심 단어소음이며 다음과 같을 수 있습니다. 생략했습니다.

열이 다음으로 추가될 때열 추가, 토토의 모든 기존 행은 해당 열의 값으로 초기화됩니다. 기본값(아니면 NULL기본값절 지정됨).

널이 아닌 기본값을 가진 열 추가 또는 유형 변경 기존 열을 사용하려면 전체 테이블과 인덱스가 필요합니다. 다시 작성되었습니다. 예외적으로 다음과 같은 경우에는사용 중절은 열 내용을 변경하지 않으며 이전 유형은 새로운 유형으로 강제할 수 있는 바이너리 또는 제한되지 않은 도메인 새로운 유형에 대해서는 테이블 재작성이 필요하지 않지만 모든 인덱스는 영향을 받은 열에서는 여전히 재구축해야 합니다. 추가 또는 제거 시스템oid열도 다시 작성해야 합니다. 테이블 전체. 테이블 및/또는 인덱스 재구축에는 시간이 걸릴 수 있습니다. 큰 테이블에는 상당한 시간이 걸립니다. 일시적으로 디스크 공간이 두 배나 필요합니다.

추가확인또는NULL이 아님제약조건에 따라 테이블을 스캔해야 합니다. 기존 행이 제약 조건을 충족하는지 확인하지만 필수 사항은 아닙니다. 테이블 재작성.

여러 항목을 지정하는 옵션을 제공하는 주된 이유 한 번에 변경됨토토 변경그건 따라서 여러 테이블 스캔 또는 다시 쓰기를 하나의 테이블로 결합할 수 있습니다. 테이블 위로 한 번 지나가세요.

열 삭제양식은 그렇지 않습니다 열을 물리적으로 제거하지만 단순히 SQL에 표시되지 않게 만듭니다. 운영. 테이블의 후속 삽입 및 업데이트 작업 열에 null 값을 저장합니다. 따라서 열을 삭제하는 것은 빠르지만 디스크상의 크기가 즉시 줄어들지는 않습니다. 삭제된 열이 차지하는 공간은 테이블이 아니기 때문입니다. 매립. 공간은 시간이 지남에 따라 기존 행으로 회수됩니다. 업데이트됩니다. (이 진술은 삭제시에는 적용되지 않습니다. 시스템oid열; 그 일은 즉시 다시 작성합니다.)

드롭된 공간을 즉시 회수하기 위해 열에서 다음 형식 중 하나를 실행할 수 있습니다.토토 변경전체를 다시 작성하는 작업 테이블. 이로 인해 삭제된 각 행이 재구성됩니다. 열이 null 값으로 대체되었습니다.

재작성 형식토토 변경있습니다 MVCC에 안전하지 않습니다. 테이블을 다시 작성한 후에는 테이블이 비어 있는 것으로 나타납니다. 동시 트랜잭션(촬영된 스냅샷을 사용하는 경우) 다시 쓰기가 발생하기 전에. 참조섹션 13.5자세한 내용은.

사용 중옵션데이터 유형 설정실제로 어떤 표현식이든 지정할 수 있습니다. 행의 이전 값을 포함합니다. 즉, 다른 항목을 참조할 수 있습니다. 열과 변환되는 열. 이는 매우 일반적인 변환은SET 데이터 유형구문. 이러한 유연성으로 인해,사용 중식이 열의 항목에 적용되지 않습니다. 기본값(있는 경우) 결과가 일정하지 않을 수도 있습니다 기본값에 필요한 표현식입니다. 이는 다음이 있을 때를 의미합니다. 이전 유형에서 새 유형으로 암시적 또는 할당 캐스팅이 없습니다.데이터 유형 설정심지어 기본값을 변환하지 못할 수도 있습니다. 그래도사용 중절이 제공되었습니다. 그런 경우에는 다음을 사용하여 기본값을 삭제합니다.기본값 삭제, 수행하다변경 유형, 그런 다음기본값으로 설정적절한 새 기본값을 추가합니다. 다음과 관련된 인덱스 및 제약 조건에도 유사한 고려 사항이 적용됩니다. 열.

테이블에 하위 테이블이 있으면 다음이 허용되지 않습니다. 열 유형을 추가, 이름 바꾸기, 변경하거나 상속된 이름 바꾸기 동일한 작업을 수행하지 않고 상위 테이블에서 제약 조건을 적용합니다. 후손. 즉,토토만 변경거부됩니다. 이렇게 하면 자손이 항상 상위 항목과 일치하는 열입니다.

재귀열 삭제작업은 하위 항목이 그렇지 않은 경우에만 하위 항목 테이블의 열을 제거합니다. 다른 부모로부터 해당 열을 물려받았지만 열의 독립적인 정의. 비재귀적열 삭제(즉,토토 변경 만 ... 열 삭제)는 하위 열을 절대 제거하지 않습니다. 대신에 독립적으로 정의된 것으로 표시합니다. 상속되었습니다.

트리거, 클러스터, 소유자토토스페이스다음 작업은 절대 반복되지 않습니다. 하위 테이블; 즉, 그들은 항상 마치처럼 행동합니다지정되었습니다. 제약 조건을 추가하면 반복됩니다. 오직확인제약조건이 아닌 표시됨상속 없음.

시스템 카탈로그 테이블의 일부를 변경하는 것은 허용됩니다.

참조PostgreSQL : 문서 : 9.3 : 스포츠 토토 작성에 대한 유효한 매개변수에 대한 추가 설명입니다.스포츠 토토 베트맨 : 문서 : 9.3 : 데이터 정의상속에 대한 추가 정보가 있습니다.

다음 유형의 열을 추가하려면varchar에 토토:

ALTER TABLE 배포자 ADD COLUMN 주소 varchar(30);

토토에서 열을 삭제하려면:

ALTER TABLE 배포자 DROP COLUMN 주소 RESTRICT;

두 개의 기존 열 유형을 하나로 변경하려면 작업:

ALTER TABLE 배포자
    ALTER COLUMN 주소 TYPE varchar(80),
    ALTER COLUMN 이름 TYPE varchar(100);

UNIX 타임스탬프가 포함된 정수 열을 다음으로 변경하려면시간대가 포함된 타임스탬프경유사용 중절:

ALTER TABLE foo
    ALTER COLUMN foo_timestamp SET DATA TYPE 시간대가 포함된 타임스탬프
    사용
        시간대가 'epoch'인 타임스탬프 + foo_timestamp * 간격 '1초';

열에 기본 표현식이 있는 경우에도 동일합니다. 자동으로 새로운 데이터 유형으로 변환됩니다.

ALTER TABLE foo
    ALTER COLUMN foo_timestamp DROP DEFAULT,
    ALTER COLUMN foo_timestamp TYPE 시간대가 포함된 타임스탬프
    사용
        시간대가 'epoch'인 타임스탬프 + foo_timestamp * 간격 '1초',
    ALTER COLUMN foo_timestamp SET DEFAULT now();

기존 열의 이름을 바꾸려면:

ALTER TABLE 배포자 RENAME COLUMN 주소 TO 도시;

기존 테이블의 이름을 바꾸려면:

ALTER TABLE 유통업체 이름을 공급업체로 변경;

기존 제약조건의 이름을 바꾸려면:

ALTER TABLE 배포자 RENAME CONSTRAINT zipchk TO zip_check;

열에 null이 아닌 제약 조건을 추가하려면:

ALTER TABLE 배포자 ALTER COLUMN street SET NOT NULL;

열에서 null이 아닌 제약 조건을 제거하려면:

ALTER TABLE 배포자 ALTER COLUMN street DROP NOT NULL;

테이블과 모든 하위 항목에 검사 제약조건을 추가하려면:

ALTER TABLE 배포자 ADD CONSTRAINT zipchk CHECK (char_length(zipcode) = 5);

검사 제약조건을 테이블에만 추가하고 테이블에는 추가하지 않음 아이들:

ALTER TABLE 배포자 ADD CONSTRAINT zipchk CHECK (char_length(zipcode) = 5) NO INHERIT;

(검사 제약 조건은 미래의 자녀에게 상속되지 않습니다. 어느 쪽이든.)

토토과 그 모든 토토에서 검사 제약 조건을 제거하려면 아이들:

ALTER TABLE 배포자 DROP CONSTRAINT zipchk;

하나의 토토에서만 검사 제약조건을 제거하려면:

ALTER TABLE ONLY 배포자 DROP CONSTRAINT zipchk;

(검사 제약은 모든 자녀에 대해 그대로 유지됩니다. 토토.)

테이블에 외래 키 제약조건을 추가하려면:

ALTER TABLE 배포자 ADD CONSTRAINT distfk FOREIGN KEY (주소) REFERENCES 주소 (주소);

테이블에 (다중 열) 고유 제약 조건을 추가하려면:

ALTER TABLE 배포자 ADD CONSTRAINT dist_id_zipcode_key UNIQUE (dist_id, 우편번호);

자동으로 명명된 기본 키 제약 조건을 테이블에 추가하려면, 테이블에는 기본 키가 하나만 있을 수 있다는 점에 유의하세요.

ALTER TABLE 배포자가 기본 키 추가(dist_id);

테이블을 다른 토토스페이스로 이동하려면:

ALTER TABLE 배포자 SET TABLESPACE fasttablespace;

토토을 다른 스키마로 이동하려면:

ALTER TABLE myschema.distributors SET SCHEMA yourschema;

업데이트를 차단하지 않고 기본 키 제약 조건을 다시 생성하려면 인덱스가 재구축되는 동안:

동시에 고유 인덱스 생성 dist_id_temp_idx ON 배포자(dist_id);
ALTER TABLE 배포자 DROP CONSTRAINT distributions_pkey,
    인덱스 dist_id_temp_idx를 사용하여 제약 조건 distributions_pkey 기본 키를 추가합니다.

호환성

양식추가(없이색인 사용 중), 드롭, 기본값으로 설정세트 데이터 유형(없이사용 중) 준수 SQL 표준을 사용합니다. 다른 형태는 다음과 같습니다.PostgreSQLSQL 표준의 확장입니다. 또한 단일에서 둘 이상의 조작을 지정하는 기능도 있습니다.토토 변경명령은 확장입니다.

테이블 드롭 열 변경다음에 사용할 수 있습니다. 테이블의 유일한 열을 삭제하고 열이 없는 테이블은 남겨 둡니다. 이 열이 없는 테이블을 허용하지 않는 SQL의 확장입니다.