ホームページ >データベース >mysql チュートリアル >Oracle で自動インクリメント列を作成するにはどうすればよいですか?

Oracle で自動インクリメント列を作成するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2025-01-23 23:41:081018ブラウズ

How to Create Auto-Increment Columns in Oracle?

Oracle データベースに自動インクリメント列を作成します

12c より前の Oracle バージョンでは、列を自動インクリメントするという概念はありませんでした。ただし、同様の機能を実現できる方法がいくつかあります。

方法 1: シーケンスとトリガーを使用する

1 つの方法は、レコードを挿入する前に値をインクリメントするシーケンスとトリガーを作成することです。

<code class="language-sql">CREATE SEQUENCE dept_seq START WITH 1;

CREATE TABLE departments (
  ID           NUMBER(10)    NOT NULL,
  DESCRIPTION  VARCHAR2(50)  NOT NULL
);

ALTER TABLE departments ADD (
  CONSTRAINT dept_pk PRIMARY KEY (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;
/</code>

方法 2: IDENTITY 列を使用する (Oracle 12c 以降)

Oracle 12c では、一意の値を自動的に生成できる IDENTITY 列データ型が導入されています。

<code class="language-sql">CREATE TABLE t1 (
    c1 NUMBER GENERATED by default on null as IDENTITY,
    c2 VARCHAR2(10)
);</code>

方法 3: シーケンスをデフォルト値として使用する (Oracle 12c 以降)

もう 1 つの方法は、列のデフォルト値としてシーケンスを使用することです。

<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
);

ALTER TABLE departments ADD (
  CONSTRAINT dept_pk PRIMARY KEY (ID)
);</code>

以上がOracle で自動インクリメント列を作成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。