때때로 수정된 행이 조작되는 동안 데이터를 얻는 것이 유용합니다. , 및 명령 INSERT에는 모두 이를 지원하는 선택적 절이 있습니다. 를 사용 하면 데이터를 수집하기 위해 추가 데이터베이스 쿼리를 수행하지 않아도 되며 수정된 행을 안정적으로 식별하기 어려울 때 특히 유용합니다.UPDATEDELETERETURNINGRETURNING
절의 허용된 내용은 명령의 출력 목록 RETURNING과 동일 합니다( 섹션 7.3 참조 ). 여기에는 명령 대상 테이블의 열 이름이나 해당 열을 사용하는 값 표현식이 포함될 수 있습니다. 일반적인 속기는 대상 테이블의 모든 열을 순서대로 선택하는 입니다.SELECTRETURNING *
에서 INSERT사용 가능한 데이터 RETURNING는 삽입된 행입니다. 이것은 클라이언트가 제공한 데이터를 반복하기 때문에 사소한 삽입에서는 그다지 유용하지 않습니다. 그러나 계산된 기본값에 의존할 때 매우 편리할 수 있습니다. 예를 들어 serial열을 사용하여 고유 식별자를 제공 RETURNING할 때 새 행에 할당된 ID를 반환할 수 있습니다.
CREATE TABLE 사용자(이름 텍스트, 성 텍스트, ID 직렬 기본 키);
INSERT INTO 사용자(이름, 성) VALUES('Joe', 'Cool') RETURNING ID;
이 RETURNING절은 와도 매우 유용합니다 INSERT ... SELECT.
에서 UPDATE사용 가능한 데이터 RETURNING는 수정된 행의 새 내용입니다. 예를 들어:
업데이트 제품 SET 가격 = 가격 * 1.10
가격 <= 99.99
RETURNING 이름, 가격 AS new_price;
에서 DELETE사용 가능한 데이터 RETURNING는 삭제된 행의 내용입니다. 예를 들어:
제품에서 삭제
WHERE obsoletion_date = '오늘'
반환 *;
대상 테이블에 트리거( 39장RETURNING )가 있는 경우 사용 가능한 데이터 는 트리거에 의해 수정된 행입니다. 따라서 트리거에 의해 계산된 열 검사는 의 또 다른 일반적인 사용 사례입니다 RETURNING.