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 ステートメントで使用できます。