[백업][가리사니] postgresql insert, update, delete 의 table, row_count 가져오기.
postgresql

이 문서는 가리사니 개발자 포럼에 올렸던 글의 백업 파일입니다. 오래된 문서가 많아 현재 상황과 맞지 않을 수 있습니다.

WITH 테이블변수명 AS
(
	DELETE FROM 테이블
		WHERE 조건
		RETURNING 리턴할컬럼명 -- *는 전부다 리턴
) SELECT 가져올컬럼 FROM 테이블변수명;

예를들어 아래와 같이 쓸 수 있습니다.

-- -------------------------------------------------------------------------------
-- 역활 : 가리사니 하루한번 도는 배치 새벽 4시
-- 2015-10-05 : 작성
-- -------------------------------------------------------------------------------
CREATE OR REPLACE FUNCTION "bat_date_04_00"
() RETURNS void AS $$
DECLARE
	__count bigint;
	__log text;
BEGIN

	__log = '';

	-- 어제이전 조회수 기록 삭제
	WITH __delete_table AS
	(
		-- RETURNING true AS t : 사실상 갯수만 받아오면 되기 때문에 1바이트짜리 아무거나 리턴!
		DELETE FROM "SilHit" WHERE date < current_date RETURNING true AS t
	) SELECT count(*) INTO __count FROM __delete_table;

	__log = __log || __count || '개의 조회수 데이터를 삭제하였습니다.';

	-- 여러가지 배치 생략

	-- 로그 남기기
	PERFORM log_sys_add('BAT', __log, NULL);

END;
$$ LANGUAGE 'plpgsql'

위와 같은 방법으로 insert 나 update 도 RETURNING 을 통해 실행 객체를 가져올 수 있습니다.

참고 : http://engineering.tilt.com/7-postgresql-data-migration-hacks/