シーケンス(順序)は、連番を生成する機能。
たとえばシーケンスをINSERT文の中で使用すると、自動的に連番が値として挿入されるので、
ID番号など重複なく一意にしたい列の値をとるのに適している。
シーケンスを作成するにはCREATE SEQUENCE文を使用する。
デフォルトでは、開始値が1、増加量が1となる。
CREATE SEQUENCE シーケンス名;
シーケンスの現在の値を得るには次のようにする。シーケンスの値は更新されない。
currval(‘シーケンス名’);
次の値を返し、値を更新する:
nextval(‘シーケンス名’);
シーケンスの値を設定する:
setval(\’シーケンス名\’,値);
シーケンス文の使用例:
insert into orders(order_id,order_date,customer_id,prod_id,qty)
values(nextval(‘order_id_seq’),now(),2,4,7);
シーケンスを使って連番を作ることができるが、実行したSQL文が失敗した場合でも
シーケンスの値は更新される。このとき、連番になっていない「とび番」が発生する。
シーケンスは完全な連番を保障するものではなく、また、完全な連番を作るのも困難である。
連番はあくまでもデータを区別するための重複していない値として考える。