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