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

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

Susan Sarandon
Susan Sarandonオリジナル
2024-12-19 13:39:10421ブラウズ

How Can I Add Auto-Increment Functionality to Existing Oracle Columns?

既存の Oracle 列の自動インクリメント

既存の列への自動インクリメント機能の追加は、Oracle ではネイティブにサポートされていません。これを実現するには、さまざまなアプローチを使用できます。

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

Oracle バージョン 11g 以前の場合、シーケンスとトリガーを使用できます:

  • シーケンスを作成します: このシーケンスは、自動インクリメント値を生成します。
  • table: 列に主キー制約を追加します。
  • トリガーの作成: トリガーは、新しい行が挿入されるたびにシーケンスの次の値を列に挿入します (列がnull).

例:

-- Create sequence
CREATE SEQUENCE t_seq START WITH 150111111 INCREMENT BY 1;

-- Alter table
ALTER TABLE t ADD CONSTRAINT id_pk PRIMARY KEY (ID);

-- Create trigger
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;

12c 以降: ID 列

Oracle 12c が導入されましたID 列機能。テーブル内での自動インクリメントが可能です。それ自体:

  • ID 列を持つテーブルを作成します:
  • 例:

    CREATE TABLE t (
    ID NUMBER GENERATED ALWAYS AS IDENTITY
          START WITH 150111111 INCREMENT BY 1,
    text VARCHAR2(50)
    );

これらのアプローチでは、列内の既存の値は更新されないことに注意してください。既存の値を変更するには、別の更新クエリが必要になります。

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

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