ホームページ >データベース >mysql チュートリアル >Oracle で自動インクリメント列を作成する方法: 11g と 12c 以降?
Oracle 11g 以降での自動インクリメント列の作成
Oracle データベースには、バージョン 12c まで自動インクリメント列の概念がありません。それにもかかわらず、シーケンスとトリガーを使用して Oracle 11g でこの動作をエミュレートすることができます。
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;
次に、新しい ID に対して一意の 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 中国語 Web サイトの他の関連記事を参照してください。