> 데이터 베이스 > MySQL 튜토리얼 > Oracle 데이터베이스에서 UPSERT 작업을 어떻게 수행할 수 있습니까?

Oracle 데이터베이스에서 UPSERT 작업을 어떻게 수행할 수 있습니까?

Susan Sarandon
풀어 주다: 2025-01-20 21:28:15
원래의
292명이 탐색했습니다.

How Can I Perform an UPSERT Operation in Oracle Database?

Oracle 데이터베이스의 UPSERT 작업

UPSERT(테이블에 업데이트 또는 삽입) 작업은 일치하는 데이터가 있는 행이 있는지 여부에 따라 기존 행을 수정하거나 테이블에 새 행을 추가하는 편리한 방법을 제공합니다.

Oracle 데이터베이스의 UPSERT 과제

다른 데이터베이스와 달리 Oracle은 전용 UPSERT 문을 제공하지 않습니다. 이 문제를 극복하기 위해 우리는 여러 데이터 소스의 데이터를 결합하는 강력한 메커니즘인 MERGE 문을 사용합니다.

MERGE를 사용하여 Oracle UPSERT 작업 수행

MERGE 문은 두 개의 테이블을 작동합니다. 하나는 대상 테이블(여기에서는 mergetest)로, 다른 하나는 자리 표시자(DUAL)로 작동합니다. 이 기술을 사용하면 UPSERT 기능을 구현할 수 있습니다.

  1. dual on(a = xa)을 사용하여 mergetest m으로 MERGE: 이 행은 대상 테이블을 식별하고 "a" 열을 기반으로 조인 조건을 설정합니다.
  2. 일치하지 않으면 (a,b) 값을 삽입합니다. ​(xa,1): 이 삽입 절은 "mergetest"에서 일치하는 행이 없으면 새 행을 생성합니다. 여기서 열은 " a"는 "xa"로 설정되고 "b"열은 1로 설정됩니다.
  3. 일치하면 업데이트 세트 b = b 1: 이 업데이트 절은 일치하는 행이 발견되면 "b" 열의 값을 1씩 증가시킵니다.

구현예

다음 코드를 고려하세요.

<code class="language-sql">create or replace procedure ups(xa number) as 
begin 
  merge into mergetest m using dual on (a = xa) 
  when not matched then insert (a,b) values (xa,1) 
  when matched then update set b = b+1; 
end ups;
/</code>
로그인 후 복사

이 절차에서는 UPSERT 작업을 수행하는 기능을 정의합니다.

사용법:

<code class="language-sql">call ups(10);
call ups(10);
call ups(20);
select * from mergetest;</code>
로그인 후 복사

출력:

<code>A                      B
---------------------- ----------------------
10                     2
20                     1</code>
로그인 후 복사

결론

MERGE 문을 사용하면 Oracle에서 UPSERT 기능을 효과적으로 구현하여 일치하는 행이 있는지 여부에 따라 테이블의 데이터를 수정하거나 삽입할 수 있습니다.

위 내용은 Oracle 데이터베이스에서 UPSERT 작업을 어떻게 수행할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿