INSERT, UPDATE, DELETE 쿼리 뒤에 RETURNING * 를 입력해 주면 실행한 쿼리의 결과를 출력해 준다
RETURNING *
-- SELECT * FROM 테이블명; 과 같다
-- * 대신 컬럼명 입력 가능
INSERT 예제
상품 기본 정보를 상품 테이블(PRODUCT)에 입력 후 정상 처리되면 상품 id(pro_id)를 받아 상품 상세 정보 테이블(PRODUCT_INFO)에 INSERT 한다
WITH INPRO AS (
INSERT INTO PRODUCT (pro_id, pro_name)
VALUEST (1, '노트북') RETURNING pro_id
)
INSERT INTO PRODUCT_INFO (pro_id, pro_qty)
SELECT pro_id, 4 AS pro_qty
FROM INPRO;
UPDATE 예제
상품 테이블(PRODUCT)에 있는 상품 이름(pro_name)을 UPDATE하고 상품 히스토리 테이블(pro_history)에 변경된 상품 이름을 INSERT한다
WITH UPSERT AS (
UPDATE PRODUCT SET pro_name = 'LG 노트북' WHERE pro_name = '노트북' RETURNING pro_name
)
INSERT INTO pro_history (description, creat_dt)
SELECT UPSERT.pro_name || '로 수정', NOW()
FROM UPSERT;
DELETE 예제
상품 테이블에서 상품 id가 1인 값은 삭제하고 삭제된 상품을 백업 테이블(product_backup)에 넣는다.
WITH DELSERT AS (
DELETE FROM PRODUCT WHERE prod_id = 1 RETURNING *
)
INSERT INTO product_backup SELECT * FROM SELSERT;
'database > PostgreSQL' 카테고리의 다른 글
[PostgreSQL] 시간 타입 (0) | 2022.12.29 |
---|