ObjectID とは
ObjectID は、ジオデータベースのテーブル内の行を一意に識別するために使用される NULL ではない整数列です。ObjectID は 32 ビット値に制限され、格納できる最大値は 2,147,483,648 です。
ArcGIS を使用して作成したテーブル、または ArcGIS の外部で作成してジオデータベースに登録したテーブルには、ObjectID フィールドが自動的に追加されます。このフィールドの値は、ジオデータベースによって管理されます。ObjectID は、ArcGIS が選択セットのスクロールや表示を行ったり、フィーチャでの個別属性の表示を行ったりするために使用します。
ほとんどの ArcGIS for Desktop の機能では、ObjectID は一意である必要があるため、直接データベースで作業をする場合は ObjectID が重複しないよう注意する必要があります。たとえば、1 対多のリレーションシップを持つビューを作成するときに ObjectID が重複する可能性があります。ObjectID が複製されると、ArcGIS for Desktop の機能が正常に動作しなくなります。
ObjectID がテーブルに追加される状況
ObjectID は次の 3 つの方法でテーブルに追加されます。
- ジオデータベースが管理する ObjectID 列は、ArcGIS で作成したテーブルに自動的に追加されます。
- 適切な列がないテーブルをジオデータベースに登録すると、ObjectID の要件を満たすようにジオデータベースによってテーブルに別の列が追加されます。テーブルに ObjectID という名前の列がすでに格納されている場合には、OBJECTID_ という名前の列が追加されます。
- sdetable または sdelayer コマンドを使用してテーブルを ArcSDE に登録した場合は、コマンドを実行する際に RowID 列を指定します。また、RowID 列を ArcSDE が管理するか、ユーザが管理するかについても指定します。
ArcSDE が RowID 列を管理するように指定した場合は、後でテーブルをジオデータベースに登録するときに、テーブルの RowID 列がジオデータベース内の ObjectID に使用されます。ユーザ管理の RowID 列を指定した場合は、後でテーブルをジオデータベースに登録するときに、ジオデータベースによって新しい ObjectID 列が追加されます。ArcSDE にテーブルを登録するときに指定した列がこの新しい ObjectID 列に置き換えられます。これによって、ユーザ定義の ObjectID のデータ タイプも ObjectID から long integer に変更されます。
このため、テーブルを ArcSDE に登録した後にジオデータベースに登録する場合は、RowID 列を ArcSDE が管理する列として登録してください。