> 데이터 베이스 > MySQL 튜토리얼 > Oracle 데이터베이스에서 자동 증가 열을 어떻게 생성합니까?

Oracle 데이터베이스에서 자동 증가 열을 어떻게 생성합니까?

DDD
풀어 주다: 2025-01-23 23:21:53
원래의
535명이 탐색했습니다.

How Do I Create Auto-Incrementing Columns in Oracle Databases?

오라클 데이터베이스의 자동 증가 열

오라클 데이터베이스에는 다른 데이터베이스 시스템과 달리 11g 버전까지는 열 자동 증가 개념이 없었습니다. 이로 인해 자동 증가 식별자가 필요한 테이블을 생성할 때 문제가 발생할 수 있습니다. 다행히도 시퀀스와 트리거를 사용하여 이 동작을 시뮬레이션할 수 있습니다.

시퀀스와 트리거를 이용한 시뮬레이션

Oracle 11g 이하에서는 시퀀스와 트리거를 생성하여 자동 증가 열을 시뮬레이션할 수 있습니다. 먼저 식별자로 사용되는 숫자 열이 포함된 테이블을 정의합니다.

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

ALTER TABLE departments ADD (
  CONSTRAINT dept_pk PRIMARY KEY (ID)
);

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>
로그인 후 복사

ID 열(Oracle 12c 이상)

Oracle 12c부터 ID 열이 진정한 자동 증가 기능으로 도입되었습니다. 다음과 같이 테이블의 ID 열을 정의할 수 있습니다.

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

ID 열은 수동 업데이트를 방지하기 위해 시작 및 증분 값을 지정할 수도 있습니다.

<code class="language-sql">CREATE TABLE t1 (
  c1 NUMBER GENERATED ALWAYS AS IDENTITY(START WITH 1 INCREMENT BY 1),
  c2 VARCHAR2(10)
);</code>
로그인 후 복사

기본값 대신 시퀀스 사용

Oracle 12에서는 시퀀스를 기본값으로 사용하는 방법도 제공합니다.

<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 데이터베이스에서 자동 증가 열을 어떻게 생성합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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