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

Oracle データベースの既存の列に自動インクリメント機能を追加するにはどうすればよいですか?

DDD
リリース: 2024-12-26 09:46:10
オリジナル
615 人が閲覧しました

How Can I Add Auto-Incrementing Functionality to Existing Columns in Oracle Databases?

Oracle データベースの既存の列の自動インクリメント

Oracle の既存の列への自動インクリメント機能の追加は、状況に応じてさまざまなアプローチで実現できます。 Oracle バージョンの場合。

Oracle 12c 以降: 使用ID 列

Oracle 12c では、自動インクリメントを簡素化する IDENTITY 列機能が導入されました。

CREATE TABLE t (
ID NUMBER GENERATED ALWAYS AS IDENTITY START WITH 150111111 INCREMENT BY 1,
text VARCHAR2(50)
);
ログイン後にコピー

Oracle 11g 以前: シーケンスとトリガー

12c より前の Oracle バージョンの場合は、次を使用できます。シーケンスとトリガーの組み合わせ:

  1. シーケンスの作成:
CREATE SEQUENCE t_seq START WITH 150111111 INCREMENT BY 1;
ログイン後にコピー
  1. テーブルの変更とプライマリの追加キー:
ALTER TABLE t ADD CONSTRAINT id_pk PRIMARY KEY (ID);
ログイン後にコピー
  1. 作成トリガー:
CREATE OR REPLACE TRIGGER t_trg
BEFORE INSERT ON t
FOR EACH ROW
WHEN (new.id IS NULL)
BEGIN
SELECT t_seq.NEXTVAL INTO :new.id FROM dual;
END;
ログイン後にコピー

このトリガーは、ID 列に値を自動的に入力します。シーケンスから。

例使用法:

どちらのメソッドでも、挿入により ID 列に 150111111 から始まる自動インクリメント値が設定されます。

INSERT INTO t(text) VALUES('auto-increment test');
ログイン後にコピー

テーブルをクエリすると、自動インクリメントされた値が確認されます。 ID:

SELECT * FROM t;

ID                        TEXT
------------------------- ----------------------------------------
150111111 This table has an auto-incrementing column
ログイン後にコピー

注: Oracle は、ID 列を使用するときに ISEQ$$ という名前のシーケンスを暗黙的に作成します。

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート