Identity是標識值,在SQL Server中,有ID列,ID屬性,ID值,ID列的值等術(shù)語。

Identity屬性是指在創(chuàng)建Table時,為列指定的Identity屬性,其語法是:column_name type IDENTITY [ (seed , increment) ],Identity屬性有兩個參數(shù):seed和increment,seed是ID值的初始值,increment是ID值的增量。在Table中創(chuàng)建的Column,如果使用Identity屬性標識,那么該列是ID列。默認情況下,不能顯式向ID列插入數(shù)值。ID列是由系統(tǒng)自動賦值的,在賦值時,系統(tǒng)根據(jù)該表的ID值,自動插入遞增的,唯一的數(shù)值,同時ID值根據(jù)Increment自動遞增。ID值有自動遞增的特性,當語句執(zhí)行失敗或事務回滾時,ID值不會回滾,這會導致ID列的值不連續(xù)。

如果想要顯式向ID列插入特定的數(shù)值,那么,必須啟用 Identity_Insert選項,該選項自動將ID值更新為ID列的最大值。

set identity_insert schema_name.table_name on

在transactional replication中,如果訂閱端的ID列設置屬性:not for replication,那么,當replication agent執(zhí)行插入操作,該列的ID值不會增加,因此,ID列的最大值和ID值,不總是保持相同。

If this property is specified for the IDENTITY property, values are not incremented in identity columns when replication agents perform inserts.

一,Identity函數(shù)

1,只能用于select-into子句中,新建一個含有Identity 列的數(shù)據(jù)表