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 バージョンの場合は、次を使用できます。シーケンスとトリガーの組み合わせ:
CREATE SEQUENCE t_seq START WITH 150111111 INCREMENT BY 1;
ALTER TABLE t ADD CONSTRAINT id_pk PRIMARY KEY (ID);
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 サイトの他の関連記事を参照してください。