오라클 데이터베이스의 자동 증가 열
오라클 데이터베이스에는 다른 데이터베이스 시스템과 달리 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!