21.02.2013 Aufrufe

hUZ6T

hUZ6T

hUZ6T

MEHR ANZEIGEN
WENIGER ANZEIGEN

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 />

シーケンス・オブジェクト内で固有な値を自動生成

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!