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 函数的示例。

注册到地理数据库的表包含 ObjectID 列(RowID)。因此,当您将一条记录插入包含 GlobalID 列的地理数据库表时,还需要插入一个 RowID 值。

各种数据库示例会将记录插入由 buse 拥有的 siting 表中,并调用 Next_RowID 过程将值插入 ObjectID 字段,调用 Next_GlobalID 过程将值插入 GlobalID 字段。在 DB2 中,必须首先调用 Next_RowID 过程获取 ObjectID 字段的值,然后在插入语句中使用该值,该语句包括将值插入 GlobalID 字段的 Next_GlobalID 函数。

DB2

由于地理数据库包括非空 ObjectID 字段,因此,必须首先获取插入到该字段的值。在下面的示例中,将为 ObjectID 字段 (698) 获取下一 RowID 值,然后将一条记录插入到包括下一行 ID 值的表中,并使用 Next_GlobalID 函数将值插入 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/15/2013