Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.
将值分配给 AUTOINCREMENT 列。这是使用 AUTOINCREMENT 生成编号的替代方法。
GET_IDENTITY( table_name [, number_to_allocate ] )
table_name 表示表名的字符串,可以选择包括所有者名称。
number_to_allocate 要保留的值的数量。缺省值为 1。
UNSIGNED BIGINT
使用 AUTOINCREMENT 或 GLOBAL AUTOINCREMENT 仍是生成 ID 最有效的方法,但此函数作为一种替代方法提供。此函数假设表定义了 AUTOINCREMENT 列。缺省情况下,它返回将为表的 AUTOINCREMENT 列生成的下一个可用值,并保留该值以便没有其它连接可以使用它。
如果未找到表,此函数会返回错误;如果表没有 AUTOINCREMENT 列,则返回 NULL。如果有多个 AUTOINCREMENT 列,将使用所找到的第一个 AUTOINCREMENT 列。
number_to_allocate 是保留值的个数。如果 number_to_allocate 大于 1,此函数还保留剩余值。下一次分配将使用当前数字加上 number_to_allocate 的值。这可以降低应用程序执行 GET_IDENTITY 函数的频率。如果 number_to_allocate 为 0,则返回下一个可用值,而不保留任何值。
执行 GET_IDENTITY 函数之后不需要执行 COMMIT,因此可以使用用于插入行的同一连接调用 GET_IDENTITY 函数。如果需要几个表的 ID 值,可以使用一个包括多个 GET_IDENTITY 函数调用的 SELECT 语句来获得这些值,如示例中所示。
GET_IDENTITY 函数是非确定型函数,因此对其进行连续调用可能会返回不同的值。优化程序不会对 GET_IDENTITY 函数的结果进行高速缓存。
有关非确定型函数的详细信息,请参见函数高速缓存。
SQL/2008 服务商扩充。
以下语句返回 Customers 表 AUTOINCREMENT 列 (ID) 的下一个可用值。返回的数字和以下九个值均会保留:
SELECT GET_IDENTITY( 'GROUPO.Customers', 10 );