UPDATE - Amazon Redshift

UPDATE

조건 충족 시 하나 이상의 테이블 열에서 값을 업데이트합니다.

참고

단일 SQL 문의 최대 크기는 16MB입니다.

구문

[ WITH [RECURSIVE] common_table_expression [, common_table_expression , ...] ] UPDATE table_name [ [ AS ] alias ] SET column = { expression | DEFAULT } [,...] [ FROM fromlist ] [ WHERE condition ]

파라미터

WITH 절

하나 이상의 common-table-expressions를 지정하는 절(옵션)입니다. WITH 절 섹션을 참조하세요.

table_name

임시 또는 영구 테이블입니다. 테이블의 소유자 또는 테이블에 대한 UPDATE 권한을 가진 사용자만이 행을 업데이트할 수 있습니다. FROM 절을 사용하거나 표현식이나 조건에 있는 테이블에서 선택하는 경우 해당 테이블에 대한 SELECT 권한이 있어야 합니다. 여기서 테이블에 별칭을 지정할 수 없지만, FROM 절에서 별칭을 지정할 수 있습니다.

참고

Amazon Redshift Spectrum 외부 테이블은 읽기 전용입니다. 외부 테이블을 업데이트할 수 없습니다.

별칭

대상 테이블의 임시 대체 이름입니다. 별칭은 옵션입니다. AS 키워드는 항상 옵션입니다.

SET column =

수정하려는 하나 이상의 열입니다. 나열되지 않는 열은 현재 값을 유지합니다. 대상 열을 지정할 때 테이블 이름을 포함하지 마십시오. 예를 들어, UPDATE tab SET tab.col = 1은 유효하지 않습니다.

expression

지정된 열에 대한 새 값을 정의하는 표현식입니다.

DEFAULT

CREATE TABLE 문의 열에 할당된 기본값으로 열을 업데이트합니다.

FROM tablelist

다른 테이블에 있는 정보를 참조하여 테이블을 업데이트할 수 있습니다. FROM 절에 다른 테이블을 나열하거나 WHERE 조건의 일부로서 하위 쿼리를 사용합니다. FROM 절에 나열된 테이블은 별칭을 가질 수 있습니다. 목록에 UPDATE 문의 대상 테이블을 포함할 필요가 있는 경우에는 별칭을 사용하십시오.

WHERE condition

조건과 일치하는 행으로 업데이트를 제한하는 선택적인 절입니다. 이 조건이 true를 반환할 때, 지정된 SET 열이 업데이트됩니다. 조건은 열에 대한 간단한 조건자 또는 하위 쿼리의 결과를 바탕으로 하는 조건일 수 있습니다.

UPDATE를 위한 대상 테이블을 포함하여, 하위 쿼리의 어떤 테이블이든 이름을 지정할 수 있습니다.

사용 노트

테이블에서 많은 수의 행을 업데이트한 후

  • 테이블을 완전히 비워 스토리지 공간을 회수하고 행을 다시 정렬합니다.

  • 테이블을 분석하여 쿼리 플래너에 대한 통계를 업데이트합니다.

왼쪽, 오른쪽 및 전체 외부 조인은 UPDATE 문의 FROM 절에서 지원되지 않고 다음 오류를 반환합니다.

ERROR: Target table must be part of an equijoin predicate

외부 조인을 지정해야 할 경우 UPDATE 문의 WHERE 절에 하위 쿼리를 사용하십시오.

UPDATE 문이 대상 테이블에 대한 자체 조인을 요구할 경우 조인 조건뿐 아니라 업데이트 작업을 위한 행을 정규화하는 WHERE 절 기준을 지정해야 합니다. 일반적으로, 대상 테이블이 그 자신이나 다른 테이블에 조인될 때의 모범 사례는 업데이트를 위해 행을 정규화하는 기준에서 조인 조건을 분명히 분리하는 하위 쿼리를 사용하는 것입니다.

구성 파라미터 error_on_nondeterministic_updatetrue로 설정된 경우 행당 여러 개의 일치 항목이 있는 UPDATE 쿼리에서 오류가 발생합니다. 자세한 내용은 error_on_nondeterministic_update 단원을 참조하십시오.

GENERATED BY DEFAULT AS IDENTITY 열을 업데이트할 수 있습니다. GENERATED BY DEFAULT AS IDENTITY로 정의된 열을 직접 입력하는 값으로 업데이트할 수 있습니다. 자세한 내용은 GENERATED BY DEFAULT AS IDENTITY 단원을 참조하십시오.