설문조사
PostgreSQL/PPAS 관련 듣고 싶은 교육은


총 게시물 94건, 최근 0 건
   

PostgreSQL 만의 고유 문법 3탄 (update...returning)

글쓴이 : PostgresDBA 날짜 : 2013-03-17 (일) 11:36 조회 : 9627
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 은 사용하기 너무 쉽네요.

라벤더 2013-06-11 (화) 15:07
보통 다량의 데이터를 form에 싸서 post방식으로 보내서 처리하는 경우 변경이 적용된 컬럼만 returning row에 담아서 볼수 있는지 궁금합니다.
댓글주소
   

postgresdba.com