원래 처음에 하고 싶었던 건
아래와 같이 WITH구문으로 서브쿼리 하나 만들어놓고 UPDATE하는 거였는데요
Update할 때 WITH구문을 사용할 수 없더라구요..사실 From절이 없어서 entry point가 없을 거라고 생각하긴 했습니다..
WITH UPSERT AS (
SELECT A.ORD_SEQ, SUM(A.ORD_QTY * A.UNT_PRC) ORD_AMT
FROM T_ORD_DET A
GROUP BY A.ORD_SEQ
)
UPDATE T_ORD
SET ORD_AMT = UPSERT.ORD_AMT
, PAY_AMT = (CASE WHEN ORD_ST = 'COMP' THEN UPSERT.ORD_AMT END)
WHERE ORD_SEQ = UPSERT.ORD_SEQ;
그래서 아래처럼 뷰로 WITH구문 부분을 생성하고 UPDATE할 때 뷰로부터 정보를 가져오고 싶었는데요
커밋도 열심히 해보고, 뷰만 따로 SELECT도 잘 되지만, UPDATE에서 뷰를 못 쓰더라구요..
왜 그런지 아시는 분 있을까요
대안이 잘 생각 안납니다ㅠㅜ 도와주십쇼
CREATE VIEW UPSERT AS
SELECT A.ORD_SEQ, SUM(A.ORD_QTY * A.UNT_PRC) ORD_AMT
FROM T_ORD_DET A
GROUP BY A.ORD_SEQ;
COMMIT;
UPDATE T_ORD
SET ORD_DT = NOW()
, ORD_ST = 'COMP'
, PAY_DT = NOW()
, PAY_TP = (CASE WHEN UPSERT.ORD_AMT > 1000000 THEN 'CARD' ELSE 'BANK' END)
, ORD_AMT = UPSERT.ORD_AMT
, PAY_AMT = UPSERT.ORD_AMT
WHERE ORD_SEQ = UPSERT.ORD_SEQ;
|