SmallStyle


2004-12-06

_ Oracleで連番を生成する

MySQLやDB2だとIDなどシーケンシャルな連番を自動でふることが可能ですが,Oracleの場合はちょっと違うらしい.順序(SEQUENCE)オブジェクトを作成して,そのオブジェクトを参照して連番をふるという形になる.そのため,insert文も通常とは多少ことなる.

--ORACLEで連番を生成するサンプル

--サンプルテーブルの作成
create table TB_SAMPLE (
   ID int primary key,
   TESTDATA char(30)
);

--順序(SEQUENCE)オブジェクトの作成
--no_seq:順序の名前(任意)
--start with:順序の開始番号
--incremental by:増加量
--maxvalue:最大値
--cycle:順序の値をメモリ上にいくつcacheするか
create SEQUENCE no_seq start with 1 increment by 1 maxvalue 99999 cycle nocache;

--行挿入時のSQL文
insert into TB_SAMPLE values(no_seq.nextval, 'テストデータ');

これで連番を生成することが可能です.


about me

いろいろと興味を持ったことを書いてます.ちょっとしたことは hb(@smallstyle) on Twitter で書いてます.

Archive

2003|01|02|03|04|05|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|12|