DBMS/PostgreSQL

[ PostgreSQL ] ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ์œผ๋ฉด update, ๋ฐ์ดํ„ฐ๊ฐ€ ์—†์œผ๋ฉด insert ( pk์—†๋Š” db upsert)

seulye 2022. 11. 10. 17:31

 

 

https://yejinrla.tistory.com/99

 

[ PostgreSQL ] ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ์œผ๋ฉด update, ๋ฐ์ดํ„ฐ๊ฐ€ ์—†์œผ๋ฉด insert (upsert)

https://mine-it-record.tistory.com/342 [PostgreSQL] ๋ฐ์ดํ„ฐ ์žˆ์œผ๋ฉด UPDATE ์—†์œผ๋ฉด INSERT (INSERT INTO ~ ON CONFLICT DO UPDATE) PostgreSQL์—์„œ ์‚ฌ์šฉํ•˜๋Š” upsert๊ตฌ๋ฌธ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž. ์˜ค๋ผํด์—์„œ๋Š” merge into, mysql์—์„œ๋Š” on duplic

yejinrla.tistory.com

 

์ €๋ฒˆ์— ์œ„์™€ ๊ฐ™์€ upsert ์ฟผ๋ฆฌ๋ฅผ ์ผ์—ˆ๋‹ค. ์ € ์ฟผ๋ฆฌ์˜ ๋ฌธ์ œ์ ์€ db์— pk๊ฐ€ ์žˆ์–ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ... 

 

WITH UPSERT AS (                            
    UPDATE pim_rule_ex_cc_amptscount
    SET google_id = 10
    WHERE student_id = 3
    RETURNING *
)
INSERT INTO pim_rule_ex_cc_amptscount(
    google_id
    , student_id
)select 10,3 
WHERE NOT EXISTS (SELECT * FROM UPSERT)

 

์ด๋ ‡๊ฒŒ ์“ฐ๋ฉด student_id๊ฐ€ pk๊ฐ€ ์•„๋‹ˆ์–ด๋„ ๋œ๋‹ค ~.~