定義
Next_GlobalID は、ジオデータベースに登録されたテーブルを入力パラメーターとして受け取り、次の Global ID の値を返します。
SQL を使用してテーブルに行を挿入する場合に、この値を使用できます。
Global ID フィールドは、テーブルをジオデータベース レプリケーションまたはオフライン マッピングに含めることができるようにするために追加されます。
入力テーブルがジオデータベースに登録されていない場合、エラーが返されます。
構文
<geodatabase administrator schema>.next_globalid (<table owner>, <table name>)
ほとんどのジオデータベースでは、ジオデータベース管理者のスキーマは sde です。ただし、SQL Server の dbo スキーマ ジオデータベースの場合、このスキーマは dbo になり、Oracle のユーザー スキーマ ジオデータベースの場合、このスキーマはユーザーのスキーマ名になります。
戻り値のタイプ
String
例
以下の例は、Next_GlobalID をサポートしている各データベースでの使用例を示しています。
各データベースの例では、BUSE が所有する SITINGS テーブルにレコードを追加しています。また、Next_RowID を呼び出して ObjectID フィールドに値を挿入し、Next_GlobalID を呼び出して Global ID フィールドに値を挿入しています。
Db2
ジオデータベース テーブルには、NOT NULL 制約のある ObjectID フィールドが含まれています。そのため、まず値を取得し、その値を ObjectID フィールドに挿入する必要があります。以下の例では、次の RowID の値が ObjectID フィールド (698) に取得され、次に、この RowID の値と、Global 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 関数も使用しています。このフィールドはすべてのジオデータベース テーブルにあり、設定が必要です。
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'
);