Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (中文) » SQL Anywhere 服务器 - SQL 参考 » 使用 SQL » SQL 函数 » SQL 函数 (E-O)

 

GET_IDENTITY 函数 [Miscellaneous]

将值分配给自动增量列。这是使用自动增量生成编号的替代方法。

语法
GET_IDENTITY( table_name [, number_to_allocate ] )
参数
  • table_name   表示表名的字符串,可以选择包括所有者名称。

  • number_to_allocate   为标识分配的开始数字。缺省值为 1。

返回值

UNSIGNED BIGINT

注释

使用自动增量或全局自动增量仍是生成 ID 的最有效方法,但仍提供了此函数作为一种替代方法。此函数假设表定义了自动增量列。缺省情况下,它返回将为表的自动增量列生成的下一个可用值,并保留该值以便没有其它连接可以使用它。

如果未找到表,此函数会返回错误;如果表没有自动增量列,则返回 NULL。如果有多个自动增量列,将使用所找到的第一个自动增量列。

number_to_allocate 是保留值的个数。如果 number_to_allocate 大于 1,此函数还保留剩余值。下一次分配将使用当前数字加上 number_to_allocate 的值。这可以降低应用程序执行 GET_IDENTITY 函数的频率。

执行 GET_IDENTITY 函数之后不需要执行 COMMIT,因此可以使用用于插入行的同一连接调用 GET_IDENTITY 函数。如果需要几个表的 ID 值,可以使用一个包括多个 GET_IDENTITY 函数调用的 SELECT 语句来获得这些值,如示例中所示。

GET_IDENTITY 函数是非确定型函数,因此对其进行连续调用可能会返回不同的值。优化程序不会对 GET_IDENTITY 函数的结果进行高速缓存。

有关非确定型函数的详细信息,请参见函数高速缓存

另请参见
标准和兼容性
  • SQL/2003   服务商扩充。

示例

以下语句返回 Customers 表自动增量列 (ID) 的下一个可用值。返回的数字和以下九个值均会保留:

SELECT GET_IDENTITY( 'Customers', 10 );