日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

sqlserver的一點(diǎn)新發(fā)現(xiàn)。

系統(tǒng) 2487 0

1. 當(dāng)表中存儲(chǔ)有大量的數(shù)據(jù)情況下,修改表的主鍵,并設(shè)置標(biāo)識(shí)列的方法。

-- 給已經(jīng)存在的字段 Id 添加主鍵約束
ALTER TABLE 表名 ADD 列名 int identity(1,1) primary key

alter table 表名

add constraint pk_id primary key (id);

設(shè)置標(biāo)示列的數(shù)據(jù):

A :有數(shù)據(jù)的話
ALTER TABLE ADD 編號(hào) 1 bigint identity(1,1) not null
go

SET IDENTITY_INSERT ON
go

update set 編號(hào) 1= 編號(hào)
go
SET IDENTITY_INSERT OFF
go

ALTER TABLE DROP COLUMN 編號(hào)
go
exec sp_rename . 編號(hào) 1, 編號(hào)
go

B :無(wú)數(shù)據(jù):
ALTER TABLE ADD 編號(hào) 1 bigint identity(1,1) not null
go
ALTER TABLE DROP COLUMN 編號(hào)
go
exec sp_rename . 編號(hào) 1, 編號(hào)
go

自增長(zhǎng)的表示列的序號(hào)的值的修改。

SQLServer 數(shù)據(jù)庫(kù)自增長(zhǎng)標(biāo)識(shí)列的更新修改操作方法(轉(zhuǎn)載)
在日常的sql server開(kāi)發(fā)中,經(jīng)常會(huì)用到Identity類型的標(biāo)識(shí)列作為一個(gè)表結(jié)構(gòu)的自增長(zhǎng)編號(hào)。比如文章編號(hào)、記錄序號(hào)等等。自增長(zhǎng)的標(biāo)識(shí)列的引用很大程度上方便了數(shù)據(jù)庫(kù)程序的開(kāi)發(fā),但是有時(shí)這個(gè)固執(zhí)的字段類型也會(huì)帶來(lái)一些麻煩。

一、修改標(biāo)識(shí)列字段的值:(在執(zhí)行insert時(shí),將ID手動(dòng)的 設(shè)置成想要的值)
有時(shí),為了實(shí)現(xiàn)某個(gè)功能,需要修改類型為Identity自增長(zhǎng)類型的字段的值,但由于標(biāo)識(shí)的類型所限,這種操作默認(rèn)是不允許的。比如,目前數(shù)據(jù)庫(kù)有10 條正常記錄,引時(shí)刪除5條,那么如果再添加數(shù)據(jù)時(shí),自增長(zhǎng)的標(biāo)識(shí)列會(huì)自動(dòng)賦值為11,可這時(shí)如果想在插入數(shù)據(jù)時(shí)給賦值6呢,默認(rèn)是不允許的。如果說(shuō)想改變 主鍵標(biāo)識(shí)符的值,完全由自已控制標(biāo)識(shí)字段的插入,方法是有的,如下:
SET IDENTITY_INSERT [TABLE][ON|OFF]
使 用上述語(yǔ)句,可以方便的控制某個(gè)表的某個(gè)自增長(zhǎng)標(biāo)識(shí)列是否自動(dòng)增長(zhǎng),也就是說(shuō)是否允許你在inert一條記錄時(shí)手動(dòng)指定主鍵標(biāo)識(shí)列字段的值。


如果指定為ON,則可以insert時(shí)指定主鍵標(biāo)識(shí)字段的值,該值不自動(dòng)增長(zhǎng)。如果使用完畢,還需使用這個(gè)語(yǔ)句將開(kāi)關(guān)關(guān)閉到默認(rèn)狀態(tài)OFF,不然下次 insert數(shù)據(jù)時(shí)該字段還是不會(huì)自動(dòng)增長(zhǎng),要做到有始有終嘛。只是每次插入時(shí)都要手動(dòng)的設(shè)置一個(gè)主鍵值,示列如下:
set identity_insert? question_title on?? //開(kāi)啟手動(dòng)設(shè)置
insert into question_title (f_id,f_valid,f_questionTitle) values(6,5,'hello');? //手動(dòng)的向數(shù)據(jù)庫(kù)插入數(shù)據(jù)

二、重置標(biāo)識(shí)列字段值:
當(dāng)數(shù)據(jù)記錄被刪除一部分后,后面再添加的新數(shù)據(jù)記錄,標(biāo)識(shí)列數(shù)值會(huì)有很大的空閑間隔,看上去不是很爽。即使你刪除表中全部記錄,identity標(biāo)識(shí)列的 值還是會(huì)無(wú)何止的自動(dòng)增加變大,而不是從頭開(kāi)始增長(zhǎng)。通過(guò)下面這條語(yǔ)句可以重置自增長(zhǎng)字段的值:
DBCC CHECKIDENT(TABLE,[RESEED|NORESEED],[1])
上述語(yǔ)句把指定表的ID值(種子值)強(qiáng)制重設(shè)為1。然而,如果你不想將ID重設(shè)為1,你可以用你想用的ID值(種子值)替代第三個(gè)參數(shù)。如果你想知道當(dāng)前的ID值(種子值),而不想重設(shè)標(biāo)識(shí)種子,這時(shí)你就要用NORESEED,而不用再去設(shè)置第三個(gè)參數(shù)。


DBCC checkident(question_title,reseed,1)

insert into question_title (f_valid,f_questionTitle) values(5,'hello');

? 如果將表中記錄都刪除后,執(zhí)行上面的一句話,這時(shí)ID的自增長(zhǎng)值已被重設(shè),再insert插入記錄到數(shù)據(jù)庫(kù)時(shí),ID就可以從設(shè)置的1開(kāi)始,以后每次插入的 記錄還是自動(dòng)增長(zhǎng)。
執(zhí)行成功后提示如下:
--檢查標(biāo)識(shí)信息: 當(dāng)前標(biāo)識(shí)值 '9',當(dāng)前列值 '1'。
DBCC 執(zhí)行完畢。如果 DBCC 輸出了錯(cuò)誤信息,請(qǐng)與系統(tǒng)管理員聯(lián)系。

說(shuō)明:以上顯示數(shù)據(jù)庫(kù)某表中當(dāng)前ID最大值為9,當(dāng)前設(shè)置的ID值為1。

sqlserver的一點(diǎn)新發(fā)現(xiàn)。


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 鄂温| 石景山区| 福州市| 武夷山市| 清远市| 丹寨县| 新民市| 梁山县| 两当县| 沽源县| 繁峙县| 嘉峪关市| 中牟县| 高唐县| 大冶市| 周宁县| 江口县| 怀集县| 海盐县| 西和县| 寻乌县| 安西县| 泗洪县| 麻阳| 六安市| 改则县| 伊金霍洛旗| 静海县| 邹城市| 增城市| 马关县| 洪洞县| 南郑县| 柳林县| 伊吾县| 纳雍县| 长沙市| 清新县| 铁力市| 漠河县| 稷山县|