>데이터 베이스 >MySQL 튜토리얼 >Oracle 데이터베이스에서 자동 증가 열을 만드는 방법은 무엇입니까?

Oracle 데이터베이스에서 자동 증가 열을 만드는 방법은 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2025-01-23 23:37:09903검색

How to Create Auto-Increment Columns in Oracle Databases?

Oracle의 열 자동 증가: 종합 가이드

버전 12c 이전의 Oracle 데이터베이스는 기본 자동 증가 열을 제공하지 않았습니다. 그러나 시퀀스와 트리거를 사용하면 이 기능을 효과적으로 복제할 수 있습니다. Oracle 12c 이상 버전에서는 진정한 ID 열을 도입하여 보다 간소화된 접근 방식을 제공합니다.

12c 이전: 시퀀스 및 트리거를 사용한 자동 증가 시뮬레이션

자동 증가 ID가 필요한 테이블을 만드는 것부터 시작해 보겠습니다.

<code class="language-sql">CREATE TABLE departments (
  ID NUMBER(10) NOT NULL,
  DESCRIPTION VARCHAR2(50) NOT NULL
);</code>

다음으로 고유 ID 값을 생성하는 시퀀스를 만듭니다.

<code class="language-sql">CREATE SEQUENCE dept_seq START WITH 1;</code>

마지막으로 트리거는 삽입 시 시퀀스 값이 ID 열에 자동으로 할당되도록 보장합니다.

<code class="language-sql">CREATE OR REPLACE TRIGGER dept_bir BEFORE INSERT ON departments
FOR EACH ROW
BEGIN
  SELECT dept_seq.NEXTVAL INTO :new.id FROM dual;
END;</code>

Oracle 12c 이상: ID 열

Oracle 12c는 기본 ID 열을 도입하여 프로세스를 크게 단순화했습니다.

<code class="language-sql">CREATE TABLE t1 (
  c1 NUMBER GENERATED BY DEFAULT ON NULL AS IDENTITY,
  c2 VARCHAR2(10)
);</code>

Oracle 12c의 고급 옵션

Oracle 12c는 추가 사용자 정의 기능을 제공합니다.

  • 시작 및 증분 값 제어: 시작 및 증분 값을 지정하여 ID 열에 수동 삽입 방지:
<code class="language-sql">CREATE TABLE t1 (
  c1 NUMBER GENERATED ALWAYS AS IDENTITY(START WITH 1 INCREMENT BY 1),
  c2 VARCHAR2(10)
);</code>
  • ID 열과 함께 시퀀스 사용: 여전히 시퀀스를 기본값 소스로 활용할 수 있습니다.
<code class="language-sql">CREATE SEQUENCE dept_seq START WITH 1;

CREATE TABLE departments (
  ID NUMBER(10) DEFAULT dept_seq.NEXTVAL NOT NULL,
  DESCRIPTION VARCHAR2(50) NOT NULL
);</code>

이러한 방법은 버전에 관계없이 Oracle 데이터베이스에서 자동 증가 열을 관리하기 위한 효율적이고 유연한 솔루션을 제공합니다.

위 내용은 Oracle 데이터베이스에서 자동 증가 열을 만드는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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