首頁 > 資料庫 > mysql教程 > 如何在 Oracle 中建立自動遞增列:11g 與 12c 及更高版本?

如何在 Oracle 中建立自動遞增列:11g 與 12c 及更高版本?

Patricia Arquette
發布: 2025-01-23 23:27:20
原創
218 人瀏覽過

How to Create Auto-Incrementing Columns in Oracle: 11g vs. 12c and Beyond?

在Oracle 11g 及更高版本中建立自動增量列

Oracle 資料庫在版本12c 之前缺乏自動增量列的概念。儘管如此,還是可以使用序列和觸發器在 Oracle 11g 中模擬此行為。

Oracle 11g 的方法

首先使用主鍵定義表column:

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;
登入後複製

接下來,建立一個觸發器,為new 產生唯一的ID值插入:

CREATE OR REPLACE TRIGGER dept_bir 
BEFORE INSERT ON departments 
FOR EACH ROW

BEGIN
  SELECT dept_seq.NEXTVAL
  INTO   :new.id
  FROM   dual;
END;
登入後複製

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 12c 及更高版本中,使用序列作為預設值:

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 與 12c 及更高版本?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板