Oracle 11g에서 AUTO_INCREMENT 유사 열 생성
11g까지의 Oracle 버전에서는 AUTO_INCREMENT 열 유형을 기본적으로 사용할 수 없습니다. 그러나 유사한 기능을 달성하기 위한 대체 메커니즘이 있습니다.
시퀀스 및 트리거 사용
Oracle 11g에서 가장 일반적인 접근 방식은 시퀀스와 트리거의 조합을 사용하는 것입니다. 트리거:
테이블 정의:
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;
트리거 정의:
CREATE OR REPLACE TRIGGER dept_bir BEFORE INSERT ON departments FOR EACH ROW BEGIN SELECT dept_seq.NEXTVAL INTO :new.id FROM dual; END; /
이 트리거는 새로 삽입된 행에 고유한 증분 값을 할당하여 자동 증가 열.
IDENTITY 열(Oracle 12c )
Oracle 12c 이상에서는 IDENTITY 열 유형이 도입되어 진정한 자동 증가 기능을 제공합니다.
테이블 정의:
create table t1 ( c1 NUMBER GENERATED by default on null as IDENTITY, c2 VARCHAR2(10) );
이 정의는
또는 시작 및 증분 값을 지정할 수 있습니다.
create table t1 ( c1 NUMBER GENERATED ALWAYS as IDENTITY(START with 1 INCREMENT by 1), c2 VARCHAR2(10) );
시퀀스를 기본값으로 사용(Oracle 12)
다른 옵션 Oracle 12 이상에서는 시퀀스를 기본값으로 사용합니다. 열:
CREATE SEQUENCE dept_seq START WITH 1; CREATE TABLE departments ( ID NUMBER(10) DEFAULT dept_seq.nextval NOT NULL, DESCRIPTION VARCHAR2(50) NOT NULL ); ALTER TABLE departments ADD ( CONSTRAINT dept_pk PRIMARY KEY (ID) );
이 접근 방식은 시퀀스를 사용하여 증분 값을 할당하지만 실제 증분 작업은 데이터베이스에서 관리합니다.
위 내용은 Oracle 11g 이상에서 자동 증가 열을 만드는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!