hUZ6T
hUZ6T
hUZ6T
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
DB2デザイン・ガイド<br />
解説(IDENTITYE列とSEQUENCE)<br />
©日本IBMシステムズ・エンジニアリング(株) Information Management部<br />
22<br />
データベース物理設計<br />
� IDENTITY列(識別列)は生成列の中の一つで、表の各行に対して固有な基本キー値を自動<br />
的に生成します。<br />
� 識別列では、アプリケーションがデータベースの外に独自のカウンターを生成する際に生じる、並行性およびパフォーマ<br />
ンス上の問題を回避することが可能です。<br />
� 固有な基本キーを自動生成する際に識別列を使用しない場合には、単一行の表にカウンターを保管するのが一般的な<br />
設計方法です。各トランザクションはこの表をロックして、数を増分してからトランザクションをコミットして、カウンターの<br />
ロックを解除します。しかし、残念ながら、この設計では、カウンターを増分できるのは一度に 1 つのトランザクションのみ<br />
です。一方、識別列を使用して基本キーを自動的に生成すると、アプリケーションでより高度なレベルの並行性を実現で<br />
きます。<br />
� SEQUENCE(シーケンス)とは、値の自動生成を可能にするデータベース・オブジェクトです。<br />
� シーケンスを使用すると、固有キー値を生成することが可能です。IDENTITY列と同様アプリケーションはシーケンスを使<br />
用することで、データベースの外部に固有カウンターを生成したことによって発生する可能性のある、並列性およびパ<br />
フォーマンスの問題を回避することができます。<br />
� 識別列属性とは異なり、シーケンスは特定の表列に関連付けられていないデータベースオブジェクトです。<br />
� シーケンス・オブジェクトはどのアプリケーションでも使用できるため、NEXTVALおよびPREVALの二つの値を返す式が定<br />
められています。<br />
IDENTITY列<br />
IDENTITY列 SEQUENC<br />
t1表<br />
t1表<br />
E<br />
C1 C2 C3 C4<br />
C1 C2 C3 C4<br />
create table t1<br />
(c1 int generated always as<br />
identity<br />
(start with 10, increment by 2),<br />
c2 char(10), c3 double, c4 int)<br />
列内で固有な値を自動生成<br />
NEXTVAL<br />
SEQUENCE<br />
オブジェクト<br />
insert into t1 (c1,c2) values (nextval for seq1, 100)<br />
シーケンス・オブジェクト内で固有な値を自動生成