OracleでAUTO_INCREMENTのIDを作成するには?
バージョン11gまでのOracleには、AUTO_INCREMENTの概念がないようです。
Oracle 11gでオートインクリメントのような動作をするカラムを作成するにはどうしたらよいでしょうか。
387
3
バージョン11gまでのOracleには、AUTO_INCREMENTの概念がないようです。
Oracle 11gでオートインクリメントのような動作をするカラムを作成するにはどうしたらよいでしょうか。
Oracle 11g*では、"auto_increment"や"identity"のような列はありません。しかし、シーケンスとトリガーを使って簡単にモデル化することができます。
テーブルの定義。
トリガーの定義
UPDATE:
Oracle 12cで
IDENTITY
カラムが利用できるようになりました。または、開始値と増加値を指定して、IDカラムへの挿入を防止する(
GENERATED ALWAYS
)(やはり、Oracle 12c+のみまた、Oracle 12では、デフォルト値としてシーケンスを使用することもできます。
ここでは3つの味を紹介します。
RAW
データタイプ。x
はIDカラムです。 以下の例では、
FOO` をテーブル名に置き換えてください。を更新しています。
Oracle 12cでは、トリガーに依存しない以下の2つのバリアントが導入されています。
最初のものは伝統的な方法でシーケンスを使用し、2番目のものは内部で値を管理します。
SQL Serverのidentity列のような列を意味しているのでしょうか?
OracleではSEQUENCEを使って同じ機能を実現しています。 良いリンクを見つけて、ここに掲載します。
Update: ご自分で見つけられたようですね。 とりあえずリンクを貼っておきます。 http://www.techonthenet.com/oracle/sequences.php