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 = 'ばなな'
),
'名前です'
)