ホームページ >データベース >mysql チュートリアル >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 サイトの他の関連記事を参照してください。