Oracle でシーケンスが使えるのは Oracle 12c からのようなので、人によっては待ちに待った機能追加なのではないでしょうか?
そして、ちょうど 12c を使っての開発があり、シーケンスの使用で全く問題なさそうな場面に遭遇しましたが、 その列には「MAX+1」を設定すると譲らない人がいました。
何やらごちゃごちゃ言っていましたが、使ったことがないだけのようです。まあ、いいんですよ、別に。 しかし、あまりにも必死だったので憐れみの視線を送っておきました。
ついでですので、ある列に、「MAX+1」を追加さするSQLのサンプルを掲載しておきます。
スポンサーリンク
挿入時に列に「MAX + 1」の値を設定する
テーブルは次のものを使用しています。
create table sample_table1 ( seq_no number(3, 0), category varchar2(16), sample_name varchar2(32) )
では早速、sql_no 列に現在の seq_noの最大値+1を挿入するSQLのサンプルです。
(個人的に)シーケンスが使いたくなってしまいますので、ここでは、列(category)ごとにMAX+1を採番するように
なお、最大値が取得できない場合(最初の1レコード目など)は、1 を設定するようにしています。
insert into ( seq_no, sample_name ) values ( ( select coalesce(MAX(seq_no), 0) + 1 from sample_table1 where category = 'ばなな' ), '名前です' )