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.