将值分配给自动增量列。这是使用自动增量生成编号的替代方法。
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 ); |
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |