ホームページ >データベース >mysql チュートリアル >Oracle データベースに自動インクリメント列を作成するにはどうすればよいですか?
Oracle の自動インクリメント列: 総合ガイド
バージョン 12c より前の Oracle データベースでは、ネイティブの自動インクリメント列が提供されていませんでした。 ただし、シーケンスとトリガーを使用してこの機能を効果的に複製できます。 Oracle 12c 以降のバージョンでは、True Identity 列が導入され、より合理化されたアプローチが提供されます。
12c より前: シーケンスとトリガーによる自動インクリメントのシミュレーション
自動インクリメント ID が必要なテーブルを作成することから始めましょう:
<code class="language-sql">CREATE TABLE departments ( ID NUMBER(10) NOT NULL, DESCRIPTION VARCHAR2(50) NOT NULL );</code>
次に、一意の ID 値を生成するシーケンスを作成します。
<code class="language-sql">CREATE SEQUENCE dept_seq START WITH 1;</code>
最後に、トリガーにより、挿入時にシーケンス値が ID
列に自動的に割り当てられます。
<code class="language-sql">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>
Oracle 12c 以降: ID 列
Oracle 12c ではネイティブ ID 列が導入され、プロセスが大幅に簡素化されました。
<code class="language-sql">CREATE TABLE t1 ( c1 NUMBER GENERATED BY DEFAULT ON NULL AS IDENTITY, c2 VARCHAR2(10) );</code>
Oracle 12c の詳細オプション
Oracle 12c ではさらなるカスタマイズが可能です:
<code class="language-sql">CREATE TABLE t1 ( c1 NUMBER GENERATED ALWAYS AS IDENTITY(START WITH 1 INCREMENT BY 1), c2 VARCHAR2(10) );</code>
<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 );</code>
これらのメソッドは、バージョンに関係なく、Oracle データベースの自動インクリメント列を管理するための効率的で柔軟なソリューションを提供します。
以上がOracle データベースに自動インクリメント列を作成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。