DB2 アプリケーション開発者は、識別列を使用して表の各行に対して固有な基本キー値を自動的に生成することができます。識別列を作成するには、 CREATE TABLE または ALTER TABLE ステートメントに IDENTITY 文節を含めてください。
アプリケーションがデータベースの外に独自のカウンターを生成する際に生じる、並行性およびパフォーマンス上の問題を回避するため、アプリケーション内で識別列を使用してください。固有な基本キーを自動生成するのに識別列を使用しない場合には、単一行の表にカウンターを保管するのが一般的な設計方法です。各トランザクションはこの表をロックして、数を増分してからトランザクションをコミットして、カウンターのロックを解除します。しかし、残念ながら、この設計では、カウンターを増分できるのは一度に 1 つのトランザクションのみです。
それとは対照的に、識別列を使用して基本キーを自動的に生成すると、アプリケーションでより高度なレベルの並行性を実現できます。識別列では、トランザクションがカウンターをロックしなくてもいいように DB2 はカウンターを保持します。カウンターを増分したコミットされていないトランザクションが、他の後続するトランザクションによるカウンターの増分を阻止しないので、識別列を使用するアプリケーションはパフォーマンスが向上します。
識別列のカウンターは、トランザクションに関係なく増分されたり減分されたりします。あるトランザクションが識別カウンターを 2 回増分する場合、他のトランザクションが同一の識別カウンターを並行して増分することがあるので、生成される 2 つの数の値には差があるかもしれません。
トランザクションがロールバックされたため、またはキャッシュに入れられた値すべてが割り当てられる前に、非活動化された (正常にまたは異常に) 値がデータベースによってキャッシュに入れられたため、識別列のカウンターの数が離れたものになる場合があります。
識別列の詳細については、 管理の手引き を参照してください。 CREATE TABLE および ALTER TABLE ステートメントの IDENTITY 文節についての詳細は、 SQL 解説書 を参照してください。