>데이터 베이스 >MySQL 튜토리얼 >기존 Oracle 열에 자동 증가 기능을 어떻게 추가할 수 있습니까?

기존 Oracle 열에 자동 증가 기능을 어떻게 추가할 수 있습니까?

Susan Sarandon
Susan Sarandon원래의
2024-12-19 13:39:10390검색

How Can I Add Auto-Increment Functionality to Existing Oracle Columns?

기존 Oracle 열에 대한 자동 증가

기존 열에 자동 증가 기능을 추가하는 것은 Oracle에서 기본적으로 지원되지 않습니다. 이를 달성하기 위해 다양한 접근 방식을 사용할 수 있습니다.

11g 이하: 시퀀스 및 트리거

Oracle 버전 11g 이하의 경우 시퀀스와 트리거를 사용할 수 있습니다.

  • 시퀀스 생성: 이 시퀀스는 자동 증가 값을 생성합니다.
  • 테이블 변경: 열에 기본 키 제약 조건을 추가합니다.
  • 트리거 만들기: 트리거는 새 행이 삽입될 때마다 시퀀스의 다음 값을 열에 삽입합니다(열이 null).

예:

-- Create sequence
CREATE SEQUENCE t_seq START WITH 150111111 INCREMENT BY 1;

-- Alter table
ALTER TABLE t ADD CONSTRAINT id_pk PRIMARY KEY (ID);

-- Create trigger
CREATE OR REPLACE TRIGGER t_trg
BEFORE INSERT ON t
FOR EACH ROW
WHEN (new.id IS NULL)
BEGIN
  SELECT t_seq.NEXTVAL INTO :new.id FROM dual;
END;

12c 이상: ID 열

Oracle 12c 도입 테이블 내에서 자동 증가를 허용하는 ID 열 기능 자체:

  • ID 열이 있는 테이블 만들기: GENERATED ALWAYS AS IDENTITY 속성을 지정합니다.
  • 예:

    CREATE TABLE t (
    ID NUMBER GENERATED ALWAYS AS IDENTITY
          START WITH 150111111 INCREMENT BY 1,
    text VARCHAR2(50)
    );

이러한 접근 방식은 열의 기존 값을 업데이트하지 않는다는 점에 유의하세요. 기존 값을 수정하려면 별도의 업데이트 쿼리가 필요합니다.

위 내용은 기존 Oracle 열에 자동 증가 기능을 어떻게 추가할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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