Next_GlobalID

定義

Next_GlobalID は、ジオデータベースに登録されたテーブルを入力パラメータとして受け取り、次のグローバル ID の値を返します。

SQL を使用してテーブルに行を挿入する場合に、この値を使用できます。

グローバル ID フィールドは、テーブルをジオデータベース レプリケーションまたはオフライン マッピングに含めることができるようにするために追加されます。

SQL を使用してテーブルに行を挿入する場合に、この値を使用できます。

入力テーブルがジオデータベースに登録されていない場合、エラーが返されます。

構文

<geodatabase administrator schema>.next_globalid (<table owner>, <table name>)

ほとんどのジオデータベースでは、ジオデータベース管理者のスキーマは sde です。ただし、SQL Server の dbo スキーマ ジオデータベースの場合、このスキーマは dbo になり、Oracle 内のユーザ スキーマ ジオデータベースの場合、このスキーマはユーザのスキーマ名になります。

戻り値のタイプ

文字列

以下の例は、Next_GlobalID をサポートしている各データベースでの使用例を示しています。

各データベースの例では、BUSE が所有する SITINGS テーブルにレコードを追加しています。また、Next_RowID を呼び出して ObjectID フィールドに値を挿入し、Next_GlobalID を呼び出してグローバル ID フィールドに値を挿入しています。

DB2

ジオデータベース テーブルには、NOT NULL 制約のある ObjectID フィールドが含まれています。そのため、まず値を取得し、その値を ObjectID フィールドに挿入する必要があります。以下の例では、次の RowID の値が ObjectID フィールド(698)に取得され、次に、この RowID の値と、グローバル ID フィールドに値を挿入するための Next_GlobalID 関数を含むレコードが、テーブルに挿入されています。

--Get the next ObjectID value.
CALL sde.next_rowid('BUSE', 'SITINGS', ?, ?, ?);

Value of output parameters

Parameter Name :   O_ROWID
Parameter Value :  698

Parameter Name :   O_MSGCODE
Parameter Value :  0

Parameter Name :   O_MESSAGE
Parameter Value :  Procedure successfully completed.

Return Status = 1

--Insert the ObjectID from the previous statement to the objectid field.
--Use the Next_GlobalID function to insert a value to the globalid field.
INSERT INTO buse.sitings (objectid, globalid, mon_type)
 VALUES (
  698,
  sde.next_globalid,
  'golem'
 );

The SQL command completed successfully

Oracle

Next_GlobalID ユーティリティを INSERT ステートメントに含めて、次に利用可能な ID 値を挿入できます。次の例では、値を ObjectID フィールドに挿入するために Next_RowID ユーティリティも使用しています。このフィールドはすべてのジオデータベース テーブルにあり、設定が必要です。

INSERT INTO buse.sitings (objectid, globalid, mon_type)
 VALUES (
  sde.gdb_util.next_rowid('BUSE', 'SITINGS'),
  sde.gdb_util.next_globalid,
  'golem'
 );

1 row created

PostgreSQL

Next_GlobalID 関数を INSERT ステートメントに含めて、次に利用可能な ID 値を挿入できます。次の例では、値を ObjectID フィールドに挿入するために Next_RowID 関数も使用しています。このフィールドはすべてのジオデータベース テーブルにあり、設定が必要です。

注意注意:

PostgreSQL で Next_GlobalID 関数を使用するには、ジオデータベースが格納されたデータベースに、PostgreSQL の uuid-ossp contrib モジュールをインストールする必要があります。

INSERT INTO buse.sitings (objectid, globalid, mon_type)
 VALUES (
  sde.next_rowid('buse', 'sitings'),
  sde.next_globalid(),
  'golem'
 );

Query returned successfully: 1 row affected, 109 ms execution time.

SQL Server

Next_GlobalID および Next_RowID はストアド プロシージャです。次の ID 値を取得するために、INSERT ステートメントの外部で実行する必要があります。どちらも、ジオデータベース管理者のスキーマに格納されます。次の例では、ジオデータベース管理者は sde です。これらのストアド プロシージャから返された値は、STINGS テーブルを更新するために INSERT ステートメントで使用されます。

--Get the next ObjectID value.
DECLARE @oid int
 EXEC sde.next_rowid 'buse', 'sitings', @oid OUTPUT
 SELECT @oid "ObjectID value";

ObjectID value
98765

--Get the next global ID value.
DECLARE @gid uniqueidentifier
 EXEC sde.next_globalid @gid OUTPUT
 SELECT @gid "ID value";

ID value
0D5D0605-8954-4A65-B86C-D2DA96C2D0C5

--Insert a row to the sitings table.
INSERT INTO buse.sitings (objectid, globalid, mon_type)
 VALUES (
  98765,
  '0D5D0605-8954-4A65-B86C-D2DA96C2D0C5',
  'golem'
 );
ヒントヒント:

次のグローバル ID 値を、テーブルに挿入する前に取得しない場合は、「SQL Server のグローバル ID(GUID)列に対する SQL による値の挿入」に示すように、SQL Server の newid() 関数を直接 INSERT ステートメントで使用できます。

関連トピック

5/25/2014