>데이터 베이스 >MySQL 튜토리얼 >MERGE를 사용하여 Oracle에서 Upsert 작업을 수행하는 방법은 무엇입니까?

MERGE를 사용하여 Oracle에서 Upsert 작업을 수행하는 방법은 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2025-01-20 21:41:12901검색

How to Perform an Upsert Operation in Oracle Using MERGE?

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_idmy_table의 기존 ID와 비교합니다.

  • WHEN MATCHED: 일치하는 항목이 발견되면 value 열이 p_value으로 업데이트됩니다.
  • WHEN NOT MATCHED: 일치하는 항목이 없으면 지정된 p_idp_value을 사용하여 새 행이 삽입됩니다.

마지막 SELECT 문은 결합된 업데이트 및 삽입 결과를 보여줍니다. 이 접근 방식은 효율적이며 조건부 검사를 통해 별도의 UPDATEINSERT 문이 필요하지 않습니다.

위 내용은 MERGE를 사용하여 Oracle에서 Upsert 작업을 수행하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.