sql創(chuàng)建和修改標識符列-禁用列的 IDENTITY 屬性
當前位置:點晴教程→知識管理交流
→『 技術(shù)文檔交流 』
通過使用 IDENTITY 屬性可以實現(xiàn)標識符列。 這使得開發(fā)人員可以為表中所插入的第一行指定一個標識號(Identity Seed 屬性),并確定要添加到種子上的增量(Identity Increment 屬性)以確定后面的標識號。將值插入到有標識符列的表中之后,SQL Server 2005 Database Engine 會通過向種子添加增量來自動生成下一個標識值。 在用 IDENTITY 屬性定義標識符列時,請注意下列幾點: 一個表只能有一個使用 IDENTITY 屬性定義的列,且必須通過使用 decimal、int、numeric、smallint、bigint 或 tinyint 數(shù)據(jù)類型來定義該列。 可指定種子和增量。二者的默認值均為 1。 標識符列不能允許為空值,也不能包含 DEFAULT 定義或?qū)ο蟆?在設(shè)置 IDENTITY 屬性后,可以使用 $IDENTITY 關(guān)鍵字在選擇列表中引用該列。還可以通過名稱引用該列。 OBJECTPROPERTY 函數(shù)可用于確定一個表是否具有 IDENTITY 列,COLUMNPROPERTY 函數(shù)可用于確定 IDENTITY 列的名稱。 通過使值能夠顯式插入,SET IDENTITY_INSERT 可用于禁用列的 IDENTITY 屬性。 ---全局唯一標識符------ 盡管 IDENTITY 屬性在一個表內(nèi)自動進行行編號,但具有各自標識符列的各個表可以生成相同的值。這是因為 IDENTITY 屬性僅在使用它的表上保證是唯一的。 如果應(yīng)用程序必須生成在整個數(shù)據(jù)庫或世界各地所有網(wǎng)絡(luò)計算機的所有數(shù)據(jù)庫中均為唯一的標識符列,請使用 ROWGUIDCOL 屬性、uniqueidentifier 數(shù)據(jù)類型和 NEWID 函數(shù)。 使用 ROWGUIDCOL 屬性定義 GUID 列時,請注意下列幾點: 一個表只能有一個 ROWGUIDCOL 列,且必須通過使用 uniqueidentifier 數(shù)據(jù)類型定義該列。 數(shù)據(jù)庫引擎 不會自動為該列生成值。若要插入全局唯一值,請為該列創(chuàng)建 DEFAULT 定義來使用 NEWID 函數(shù)生成全局唯一值。 在設(shè)置 ROWGUIDCOL 屬性后,通過使用 $ROWGUID 關(guān)鍵字可以在選擇列表中引用該列。 這與通過使用 $IDENTITY 關(guān)鍵字可以引用 IDENTITY 列的方法類似。 OBJECTPROPERTY 函數(shù)可用于確定一個表是否具有 ROWGUIDCOL 列,COLUMNPROPERTY 函數(shù)可用于確定 ROWGUIDCOL 列的名稱。 由于 ROWGUIDCOL 屬性不強制唯一性,因此應(yīng)使用 UNIQUE 約束來保證插入到 ROWGUIDCOL 列中的值是唯一的。 SET IDENTITY_INSERT [ database_name . [ schema_name ] . ] table { ON | OFF } 備注 任何時候,一個會話中只有一個表的 IDENTITY_INSERT 屬性可以設(shè)置為 ON。如果某個表已將此屬性設(shè)置為 ON,則對另一個表發(fā)出 SET IDENTITY_INSERT ON 語句時,SQL Server 2005 將返回一個錯誤信息,指出 SET IDENTITY_INSERT 已設(shè)置為 ON,并報告已將其屬性設(shè)置為 ON 的表。 如果插入值大于表的當前標識值,則 SQL Server 自動將新插入值作為當前標識值使用。 SET IDENTITY_INSERT 的設(shè)置是在執(zhí)行或運行時設(shè)置的,而不是在分析時設(shè)置的。 該文章在 2012/2/11 0:28:48 編輯過 |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |