UPDATE 문을 수행하여, 업데이트한 로우를 바로 출력할수 있습니다.
UPDATE...RETURNING ..문으로 말이죠. 바로 아래 예제를 보시죠.
scott@[local]:5432:scottdb]
SQL> select * from emp; -- sal 이 1000 미만인 직원의 월급을 빨간색으로 표시함.
empno | ename | job | mgr | hiredate | sal | comm | deptno
-------+--------+-----------+------+------------+------+------+--------
7369 | SMITH | CLERK | 7902 | 1980-12-17 | 800 | NULL | 20
7499 | ALLEN | SALESMAN | 7698 | 1981-02-20 | 1600 | 300 | 30
7521 | WARD | SALESMAN | 7698 | 1981-02-22 | 1250 | 500 | 30
7566 | JONES | MANAGER | 7839 | 1981-04-02 | 2975 | NULL | 20
7654 | MARTIN | SALESMAN | 7698 | 1981-09-28 | 1250 | 1400 | 30
7698 | BLAKE | MANAGER | 7839 | 1981-05-01 | 2850 | NULL | 30
7782 | CLARK | MANAGER | 7839 | 1981-06-09 | 2450 | NULL | 10
7788 | SCOTT | ANALYST | 7566 | 1982-12-09 | 3000 | NULL | 20
7839 | KING | PRESIDENT | NULL | 1981-11-17 | 5000 | NULL | 10
7844 | TURNER | SALESMAN | 7698 | 1981-09-08 | 1500 | 0 | 30
7876 | ADAMS | CLERK | 7788 | 1983-01-12 | 1100 | NULL | 20
7900 | JAMES | CLERK | 7698 | 1981-12-03 | 950 | NULL | 30
7902 | FORD | ANALYST | 7566 | 1981-12-03 | 3000 | NULL | 20
7934 | MILLER | CLERK | 7782 | 1982-01-23 | 1300 | NULL | 10
(14 rows)
scott@[local]:5432:scottdb]
-- 업데이트한 결과로우를 바로 출력해줍니다.
SQL> update emp set sal=sal+100 where sal<1000 returning *;
empno | ename | job | mgr | hiredate | sal | comm | deptno
-------+-------+-------+------+------------+------+------+--------
7369 | SMITH | CLERK | 7902 | 1980-12-17 | 900 | NULL | 20
7900 | JAMES | CLERK | 7698 | 1981-12-03 | 1050 | NULL | 30
(2 rows)
UPDATE 2
scott@[local]:5432:scottdb]
오라클 경우에도 UPDATE .. RETURNING 문을 지원하나, PL/SQL 등에서 사용해야 한다든지 제약이 있죠.
그러나, PostgreSQL 은 사용하기 너무 쉽네요.