SQLSERVER中怎么實(shí)現(xiàn)自增列

這期內(nèi)容當(dāng)中小編將會(huì)給大家?guī)?lái)有關(guān)SQL SERVER中怎么實(shí)現(xiàn)自增列,文章內(nèi)容豐富且以專(zhuān)業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

成都網(wǎng)站制作、網(wǎng)站建設(shè)介紹好的網(wǎng)站是理念、設(shè)計(jì)和技術(shù)的結(jié)合。創(chuàng)新互聯(lián)擁有的網(wǎng)站設(shè)計(jì)理念、多方位的設(shè)計(jì)風(fēng)格、經(jīng)驗(yàn)豐富的設(shè)計(jì)團(tuán)隊(duì)。提供PC端+手機(jī)端網(wǎng)站建設(shè),用營(yíng)銷(xiāo)思維進(jìn)行網(wǎng)站設(shè)計(jì)、采用先進(jìn)技術(shù)開(kāi)源代碼、注重用戶(hù)體驗(yàn)與SEO基礎(chǔ),將技術(shù)與創(chuàng)意整合到網(wǎng)站之中,以契合客戶(hù)的方式做到創(chuàng)意性的視覺(jué)化效果。

declare @Table_name varchar(60)

set @Table_name = '';

if Exists(Select top 1 1 from sysobjects Where objectproperty(id, 'TableHasIdentity') = 1 and upper(name) = upper(@Table_name) ) select 1else select 0

-- or

if Exists(Select top 1 1 from sysobjects so Where so.xtype = 'U' and upper(so.name) = upper(@Table_name) and Exists(Select Top 1 1 from syscolumns sc Where sc.id = so.id and columnproperty(sc.id, sc.name, 'IsIdentity') = 1 ) ) select 1else select 0

判斷Table是否存在自增列(Identity column),并查出自增列相關(guān)數(shù)據(jù):

declare @Table_name varchar(60)set @Table_name = '';

declare @Table_name varchar(60)set @Table_name = 'zy_cost_list';Select so.name Table_name, --表名字 sc.name Iden_Column_name, --自增字段名字 ident_current(so.name) curr_value, --自增字段當(dāng)前值 ident_incr(so.name) incr_value, --自增字段增長(zhǎng)值 ident_seed(so.name) seed_value --自增字段種子值 from sysobjects so Inner Join syscolumns sc on so.id = sc.id and columnproperty(sc.id, sc.name, 'IsIdentity') = 1Where upper(so.name) = upper(@Table_name)

資料引用:

DBCC CHECKIDENT

檢查指定表的當(dāng)前標(biāo)識(shí)值,如有必要,還對(duì)標(biāo)識(shí)值進(jìn)行更正。

語(yǔ)法

DBCC CHECKIDENT( 'table_name'[ ,{ NORESEED| { RESEED [ ,new_reseed_value ] } } ] )

參數(shù)

'table_name'

是要對(duì)其當(dāng)前標(biāo)識(shí)值進(jìn)行檢查的表名。表名必須符合標(biāo)識(shí)符規(guī)則。有關(guān)更多信息,請(qǐng)參見(jiàn)使用標(biāo)識(shí)符。指定的表必須包含標(biāo)識(shí)列。

NORESEED

指定不應(yīng)更正當(dāng)前標(biāo)識(shí)值。

RESEED

指定應(yīng)該更正當(dāng)前標(biāo)識(shí)值。

new_reseed_value

是在標(biāo)識(shí)列中重新賦值時(shí)要使用的值。

注釋

如有必要,DBCC CHECKIDENT 會(huì)更正列的當(dāng)前標(biāo)識(shí)值。然而,如果標(biāo)識(shí)列是使用 NOT FOR REPLICATION 子句(在 CREATE TABLE 或 ALTER TABLE 語(yǔ)句中)創(chuàng)建的,則不更正當(dāng)前標(biāo)識(shí)值。

如果標(biāo)識(shí)列上有主鍵或唯一鍵約束,無(wú)效標(biāo)識(shí)信息可能會(huì)導(dǎo)致錯(cuò)誤信息 2627。

對(duì)當(dāng)前標(biāo)識(shí)值所做的具體更正取決于參數(shù)規(guī)范。

DBCC CHECKIDENT ('table_name', NORESEED)不重置當(dāng)前標(biāo)識(shí)值。DBCC CHECKIDENT 返回一個(gè)報(bào)表,它指明當(dāng)前標(biāo)識(shí)值和應(yīng)有的標(biāo)識(shí)值。DBCC CHECKIDENT ('table_name') 或DBCC CHECKIDENT ('table_name', RESEED)如果表的當(dāng)前標(biāo)識(shí)值小于列中存儲(chǔ)的最大標(biāo)識(shí)值,則使用標(biāo)識(shí)列中的最大值對(duì)其進(jìn)行重置。DBCC CHECKIDENT ('table_name', RESEED, new_reseed_value)當(dāng)前值設(shè)置為 new_reseed_value。如果自創(chuàng)建表后沒(méi)有將行插入該表,則在執(zhí)行 DBCC CHECKIDENT 后插入的第一行將使用 new_reseed_value 作為標(biāo)識(shí)。否則,下一個(gè)插入的行將使用 new_reseed_value + 1。如果 new_reseed_value 的值小于標(biāo)識(shí)列中的最大值,以后引用該表時(shí)將產(chǎn)生 2627 號(hào)錯(cuò)誤信息。

當(dāng)前標(biāo)識(shí)值可以大于表中的最大值。在此情況下,DBCC CHECKIDENT 并不自動(dòng)重置當(dāng)前標(biāo)識(shí)值。若要在當(dāng)前標(biāo)識(shí)值大于列中的最大值時(shí)對(duì)當(dāng)前標(biāo)識(shí)值進(jìn)行重置,請(qǐng)使用兩種方法中的任意一種:

  • 執(zhí)行 DBCC CHECKIDENT (

  • 'table_name'
  • , NORESEED) 以確定列中的當(dāng)前最大值,然后使用 DBCC CHECKIDENT (

  • 'table_name'
  • , RESEED,

  • new_reseed_value
  • ) 語(yǔ)句將該值指定為

  • new_reseed_value
  • 。將

  • new_reseed_value
  • 置為很小值來(lái)執(zhí)行 DBCC CHECKIDENT (

  • 'table_name'
  • , RESEED,

  • new_reseed_value
  • ),然后運(yùn)行 DBCC CHECKIDENT (

  • 'table_name'
  • , RESEED)。

  • 結(jié)果集

    不管是否指定任何選項(xiàng)(針對(duì)于包含標(biāo)識(shí)列的表;下例使用 pubs數(shù)據(jù)庫(kù)的 jobs表),DBCC CHECKIDENT 返回以下結(jié)果集(值可能會(huì)有變化):

    Checking identity information: current identity value '14', current column value '14'.DBCC execution completed. If DBCC printed error messages, contact your system administrator.
    權(quán)限

    DBCC CHECKIDENT 權(quán)限默認(rèn)授予表所有者、sysadmin固定服務(wù)器角色和 db_owner固定數(shù)據(jù)庫(kù)角色的成員且不可轉(zhuǎn)讓。

    示例
    A. 如有必要,重置當(dāng)前標(biāo)識(shí)值

    下例在必要的情況下重置 jobs表的當(dāng)前標(biāo)識(shí)值。

    USE pubsGODBCC CHECKIDENT (jobs)GO
    B. 報(bào)告當(dāng)前標(biāo)識(shí)值

    下例報(bào)告 jobs表中的當(dāng)前標(biāo)識(shí)值;如果該標(biāo)識(shí)值不正確,并不對(duì)其進(jìn)行更正。

    USE pubsGODBCC CHECKIDENT (jobs, NORESEED)GO
    C. 強(qiáng)制當(dāng)前標(biāo)識(shí)值為 30

    下例強(qiáng)制 jobs表中的當(dāng)前標(biāo)識(shí)值為 30。

    USE pubsGODBCC CHECKIDENT (jobs, RESEED, 30)GO

上述就是小編為大家分享的SQL SERVER中怎么實(shí)現(xiàn)自增列了,如果剛好有類(lèi)似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

分享名稱(chēng):SQLSERVER中怎么實(shí)現(xiàn)自增列
當(dāng)前網(wǎng)址:http://muchs.cn/article34/gdopse.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供域名注冊(cè)、服務(wù)器托管、營(yíng)銷(xiāo)型網(wǎng)站建設(shè)、網(wǎng)站內(nèi)鏈做網(wǎng)站、面包屑導(dǎo)航

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

網(wǎng)站建設(shè)網(wǎng)站維護(hù)公司