때때로 행이 조작되는 동안 수정된 행에서 사설 토토를 얻는 것이 유용합니다.삽입, 업데이트, 삭제그리고병합명령에는 모두 선택사항이 있습니다돌아오는 중이를 지원하는 절입니다. 의 사용반환 중사설 토토를 수집하기 위해 추가 사설 토토베이스 쿼리를 수행하지 않으며, 수정된 행을 안정적으로 식별하기 어려울 때 특히 유용합니다.
a의 허용된 콘텐츠복귀 중절은 a와 동일합니다선택명령의 출력 목록(참조PostgreSQL : 문서 : 개발 : 7.3. 목록 롤 토토). 여기에는 명령 대상 테이블의 열 이름이나 해당 열을 사용하는 값 표현식이 포함될 수 있습니다. 일반적인 약어는 다음과 같습니다.반환 중 *, 대상 테이블의 모든 열을 순서대로 선택합니다.
안에삽입, 사용할 수 있는 기본 사설 토토돌아오는 중은 삽입된 행입니다. 이는 클라이언트가 제공한 데이터를 반복하기 때문에 사소한 삽입에는 그다지 유용하지 않습니다. 그러나 계산된 기본값을 사용할 때는 매우 편리할 수 있습니다. 예를 들어,연재고유 식별자를 제공하는 열,돌아오는 중새 행에 할당된 ID를 반환할 수 있습니다.
CREATE TABLE 사용자(이름 텍스트, 성 텍스트, ID 직렬 기본 키);
INSERT INTO 사용자 (이름, 성) VALUES ('Joe', 'Cool') RETURNING id;
그돌아오는 중절은 다음에도 매우 유용합니다.삽입 ... 선택.
안에업데이트, 사용할 수 있는 기본 사설 토토돌아오는 중은 수정된 행의 새 콘텐츠입니다. 예를 들면:
제품 업데이트 SET 가격 = 가격 * 1.10 가격 <= 99.99 반환 이름, 가격 AS new_price;
에삭제, 사용할 수 있는 기본 사설 토토돌아오는 중은 삭제된 행의 내용입니다. 예를 들면:
제품에서 삭제 WHERE obsoletion_date = '오늘' 돌아오는 중 *;
에병합, 사용할 수 있는 기본 사설 토토돌아오는 중은 소스 행의 내용과 삽입, 업데이트 또는 삭제된 대상 행의 내용을 더한 것입니다. 소스와 대상이 동일한 열을 많이 갖는 것이 매우 일반적이므로 다음을 지정합니다.반환 중 *열이 많이 중복될 수 있으므로 소스 또는 대상 행만 반환하도록 한정하는 것이 더 유용한 경우가 많습니다. 예를 들면:
제품에 병합 p USING new_products n ON p.product_no = n.product_no 일치하지 않을 경우 값을 삽입하세요(n.product_no, n.name, n.price) 일치하는 경우 업데이트 세트 이름 = n.name, 가격 = n.price 돌아오는 중 p.*;
이러한 각 명령에서는 수정된 행의 이전 내용과 새 내용을 명시적으로 반환하는 것도 가능합니다. 예를 들면:
제품 업데이트 SET 가격 = 가격 * 1.10
가격 <= 99.99
반환 이름, old.price AS old_price, new.price AS new_price,
new.price - old.price AS 가격_변경;
이 예에서는 쓰기신규.가격그냥 쓰는 것과 같습니다가격, 하지만 의미가 더 명확해졌습니다.
이전 값과 새 값을 반환하는 이 구문은 다음에서 사용할 수 있습니다.삽입, 업데이트, 삭제및병합명령이지만 일반적으로 이전 값은 다음과 같습니다.NULL에 대한삽입, 새 값은NULL에 대한삭제. 그러나 해당 명령에 여전히 유용할 수 있는 상황이 있습니다. 예를 들어,삽입그리고충돌 시 업데이트를 하세요절, 이전 값은 비-NULL충돌하는 행의 경우. 마찬가지로, 만일 a삭제이(가)로 변했습니다.업데이트작성자:PostgreSQL : 문서 : 개발 : 사설 토토 사이트 작성, 새 값은 다음이 아닐 수 있습니다.NULL.
트리거가 있는 경우 (토토 꽁 머니 : 문서 : 개발 : 37 장. 트리거) 대상 테이블에서 사용할 수 있는 사설 토토는돌아오는 중은 트리거에 의해 수정된 행입니다. 따라서 트리거로 계산된 열을 검사하는 것은 다음의 또 다른 일반적인 사용 사례입니다.돌아오는 중.