[postgresql] UPSERT
SQL- upsert 만드는 법
기존 오라클에서 사용하던 merge 구문효과를 postgresql 에서 사용하기 위해 UPSERT 문을 만들어 사용한다.1)
INSERT INTO spider_count (spider, tally) VALUES ('Googlebot', 1);
2)
UPDATE spider_count SET tally=tally+1 WHERE date='today' AND spider='Googlebot';
이와 같은 2개의 구문이 있다고 할 때,변환 방법은 다음 처럼 한다. upsert 라는 변수로 가정하고,
$insert = "INSERT INTO spider_count (spider, tally) SELECT 'Googlebot', 1";
$upsert = "UPDATE spider_count SET tally=tally+1 WHERE date='today' AND spider='Googlebot'";위 2개의 변수를 아래 모양에 맞춰 넣는다.
WITH upsert AS ($update RETURNING *) $insert WHERE NOT EXISTS (SELECT * FROM upsert);
WITH upsert AS ( (UPDATE spider_count SET tally=tally+1 WHERE date='today' AND spider='Googlebot') RETURNING *) INSERT INTO spider_count(spider, tally) SELECT 'Goolgebot', 1 WHERE NOT EXISTS( SELECT * FROM upsert)
'프로그래밍 > SQL' 카테고리의 다른 글
[SQL] rownum, limit(top), order by 순서지정 (0) | 2017.04.11 |
---|