문서의 이전 판입니다!
| 물리명 | 논리명 | 타입 | KEY |
|---|---|---|---|
| 머지 키 | merge_key | 문자 | PK |
| 머지 값 | merge_value | 문자 |
CREATE TABLE ex_merge ( merge_key VARCHAR(100) NOT NULL PRIMARY KEY, merge_value VARCHAR(100) NOT NULL );
-- MySQL 4.1 이상 -- 조건은 PK, UK 컬럼만 가능 INSERT INTO ex_merge ( merge_key , merge_value ) VALUES ( '1' , 'INSERT' ) ON DUPLICATE KEY UPDATE merge_value = 'UPDATE' ;
-- MSSQL 2008 이상 MERGE INTO ex_merge a USING (SELECT 1 AS dummy) b ON a.merge_key = '1' WHEN MATCHED THEN UPDATE SET merge_value = 'UPDATE' WHEN NOT MATCHED THEN INSERT ( merge_key , merge_value ) VALUES ( '1' , 'INSERT' ) ;
-- Oracle 9i 이상 -- Tibero MERGE INTO ex_merge USING DUAL ON (merge_key = '1') WHEN MATCHED THEN UPDATE SET merge_value = 'UPDATE' WHEN NOT MATCHED THEN INSERT ( merge_key , merge_value ) VALUES ( '1' , 'INSERT' ) ;
-- PostgreSQL 9.5 미만 WITH upsert AS ( UPDATE SET merge_value = 'UPDATE' WHERE merge_key = '1' RETURNING * ) INSERT INTO ex_merge ( merge_key , merge_value ) SELECT '1' , 'INSERT' WHERE NOT EXISTS (SELECT * FROM upsert) ; -- PostgreSQL 9.5 이상 -- 조건은 PK, UK 컬럼만 가능 INSERT INTO ex_merge ( merge_key , merge_value ) VALUES ( '1' , 'INSERT' ) ON CONFLICT (merge_key) DO UPDATE SET merge_value = 'UPDATE' ; -- PostgreSQL 15 이상 MERGE INTO ex_merge a USING (SELECT 1 AS dummy) b ON a.merge_key = '1' WHEN MATCHED THEN UPDATE SET merge_value = 'UPDATE' WHEN NOT MATCHED THEN INSERT ( merge_key , merge_value ) VALUES ( '1' , 'INSERT' ) ;