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