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

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

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

set identity_insert schema_name.table_name on

在transactional replication中,如果訂閱端的ID列設(shè)置屬性:not for replication,那么,當(dāng)replication agent執(zhí)行插入操作,該列的ID值不會(huì)增加,因此,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子句中,新建一個(gè)含有Identity 列的數(shù)據(jù)表