既存の Oracle 列の自動インクリメント
既存の列への自動インクリメント機能の追加は、Oracle ではネイティブにサポートされていません。これを実現するには、さまざまなアプローチを使用できます。
11g 以前:シーケンスとトリガー
Oracle バージョン 11g 以前の場合、シーケンスとトリガーを使用できます:
例:
-- 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 列機能。テーブル内での自動インクリメントが可能です。それ自体:
例:
CREATE TABLE t ( ID NUMBER GENERATED ALWAYS AS IDENTITY START WITH 150111111 INCREMENT BY 1, text VARCHAR2(50) );
これらのアプローチでは、列内の既存の値は更新されないことに注意してください。既存の値を変更するには、別の更新クエリが必要になります。
以上が既存の Oracle 列に自動インクリメント機能を追加するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。