Next_GlobalID

定義

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

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

globalID フィールドは、テーブルをジオデータベース レプリケーションに含めることができるようにするために追加されます。Next_GlobalID 関数は、他の GUID フィールドの値を返しません。

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

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

注意注意:

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

SQL Server データベース内の次の GlobalID の値を取得するには、SQL Server の newid() 関数を使用します。

構文

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

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

戻り値のタイプ

文字列

以下に、NextGlobalID 関数をサポートするそれぞれのデータベースで NextGlobalID 関数を使用する例を示します。

ジオデータベースに登録されたテーブルには、ObjectID 列(RowID)が含まれています。したがって、GlobalID 列を含むジオデータベース テーブルにレコードを挿入する場合は、RowID の値も挿入する必要があります。

各データベースの例では、BUSE が所有する SITINGS テーブルにレコードが追加されています。Next_RowID プロシージャが呼び出されて ObjectID フィールドに値が挿入され、Next_GlobalID プロシージャが呼び出されて GlobalID フィールドに値が挿入されます。DB2 では、まず Next_RowID プロシージャを呼び出して ObjectID フィールドの値を取得し、次にこの値を INSERT ステートメントで使用します。INSERT ステートメントには、GlobalID フィールドに値を挿入するための Next_GlobalID 関数が含まれています。

DB2

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

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 INTO buse.sitings (objectid, globalid, mon_type)
VALUES
(698, sde.next_globalid, 'golem');

The SQL command completed successfully

Oracle

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

1 row created

PostgreSQL

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

Query returned successfully: 1 row affected, 109 ms execution time.
9/14/2013