집 >데이터 베이스 >MySQL 튜토리얼 >MERGE를 사용하여 Oracle에서 Upsert 작업을 수행하는 방법은 무엇입니까?
Oracle Upsert: 효율적인 데이터 업데이트 또는 삽입
문제:
Oracle에서 레코드가 있으면 업데이트하고, 없으면 새 레코드를 삽입하는 upsert 작업을 어떻게 수행할 수 있나요?
해결책: MERGE
진술
Oracle에는 전용 UPSERT 명령이 없습니다. MERGE
문이 이 기능을 제공합니다. 조인 조건에 따라 업데이트 및 삽입 작업을 효율적으로 결합합니다.
예시
이 예에서는 저장 프로시저 내에서 MERGE
문을 사용하여 upsert를 보여줍니다.
<code class="language-sql">CREATE OR REPLACE PROCEDURE upsert_data (p_id NUMBER, p_value NUMBER) AS BEGIN MERGE INTO my_table target USING dual source ON (target.id = p_id) WHEN MATCHED THEN UPDATE SET target.value = p_value WHEN NOT MATCHED THEN INSERT (id, value) VALUES (p_id, p_value); END; / -- Sample usage and verification CREATE TABLE my_table (id NUMBER PRIMARY KEY, value NUMBER); BEGIN upsert_data(1, 10); upsert_data(1, 20); -- Update existing row upsert_data(2, 30); -- Insert new row END; / SELECT * FROM my_table;</code>
이 프로시저 upsert_data
는 ID와 값을 사용합니다. MERGE
문은 제공된 p_id
을 my_table
의 기존 ID와 비교합니다.
WHEN MATCHED
: 일치하는 항목이 발견되면 value
열이 p_value
으로 업데이트됩니다.WHEN NOT MATCHED
: 일치하는 항목이 없으면 지정된 p_id
및 p_value
을 사용하여 새 행이 삽입됩니다.마지막 SELECT
문은 결합된 업데이트 및 삽입 결과를 보여줍니다. 이 접근 방식은 효율적이며 조건부 검사를 통해 별도의 UPDATE
및 INSERT
문이 필요하지 않습니다.
위 내용은 MERGE를 사용하여 Oracle에서 Upsert 작업을 수행하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!