一意識別子フィールドの選択
ArcMap のすべてのレイヤには一意識別子が必要です。そのため、クエリ レイヤも一意識別子を持つ必要があります。
多くの場合、一意識別子フィールドには ObjectID 属性が使用されます。この属性はジオデータベース内のすべてのオブジェクトに含まれていますが、クエリ レイヤはジオデータベース以外に保存されたデータ上にも作成されるため、クエリ レイヤのフィールドセットに ObjectID フィールドが存在しないこともあります。このため、ArcGIS で一意識別子の生成に使用するフィールドまたはフィールドのグループを指定する必要があります。
デフォルトでは、ArcGIS の整合チェックにおいて結果セット内で最初に検索された NOT NULL フィールドを一意識別子フィールドとして設定します。多くの場合、この値は一意識別子フィールドとして適切に使用されますが、一意識別子フィールドのリストの他フィールドを選択してこのプロパティを変更することも可能です。
一意識別子として使用できるのは特定のフィールド タイプに限られます。これらのフィール ドタイプには、整数(integer)、文字列(string)、GUID、日付(date)が含まれます。単一の整数フィールドを指定した場合、ArcGIS ではそのフィールドから値を使用して、クエリ レイヤから返されたすべてのフィーチャと行を直接一意に識別します。ただし、単一の文字列フィールドまたはフィールドのグループが一意識別子として使用される場合、ArcGIS はその一意の値を整数にマップする必要があります。マップ選択の作成や属性テーブルを開くときなど ArcGIS システムで ObjectID 属性が必要とされるときには、これは必ず実行されます。
一意識別子の値は、ArcGIS 内の行またはフィーチャ オブジェクトを一意に識別するため、そのフィールドの値は常に一意で、また NULL ではない必要があります。必要に応じてユーザがこのフィールドの値を管理します。ArcGIS ではクエリ レイヤの一意識別子フィールド内の値の一意性を確認しません。値が一意ではない場合、ArcGIS は予測不能な動作をすることがあります。
フィールドは、一意識別子リストから選択できますが、選択しなくても構いません。複数のフィールドを選択した場合、これらのフィールドの値は一意な整数値を生成するためのキーとして使用されます。この結果フィールドは、同名のフィールドがなければ常に ESRI_OID と呼ばれます。
ArcGIS では、一意識別子フィールドのすべての値に NULL が含まれないように自動で修正を加えることはありません。NULL 値が存在しているとエラーが表示されます。一意識別子に使用されるすべての値に NULL を発生させないように、クエリ レイヤの作成者は注意する必要があります。クエリ レイヤの結果セットを整合して、一意識別子に使用されるすべての値に NULL が含まれないことを確認します。
ArcGIS は一意識別子内の値の一意性を確認しません。ArcGIS に一意でない値が出現しているのにエラーが返されない場合でも、選択セットまたは ArcGIS 内のその他のクエリに不整合な結果が存在していることがあります。