1. 當表中存儲有大量的數據情況下,修改表的主鍵,并設置標識列的方法。
--
給已經存在的字段
Id
添加主鍵約束
ALTER TABLE
表名
ADD
列名
int identity(1,1) primary key
alter table 表名
add constraint pk_id primary key (id);
設置標示列的數據:
A
:有數據的話
ALTER TABLE
表
ADD
編號
1 bigint identity(1,1) not null
go
SET IDENTITY_INSERT
表
ON
go
update
表
set
編號
1=
編號
go
SET IDENTITY_INSERT
表
OFF
go
ALTER TABLE
表
DROP COLUMN
編號
go
exec sp_rename
表
.
編號
1,
編號
go
B
:無數據:
ALTER TABLE
表
ADD
編號
1 bigint identity(1,1) not null
go
ALTER TABLE
表
DROP COLUMN
編號
go
exec sp_rename
表
.
編號
1,
編號
go
自增長的表示列的序號的值的修改。
SQLServer
數據庫自增長標識列的更新修改操作方法(轉載)
在日常的sql server開發中,經常會用到Identity類型的標識列作為一個表結構的自增長編號。比如文章編號、記錄序號等等。自增長的標識列的引用很大程度上方便了數據庫程序的開發,但是有時這個固執的字段類型也會帶來一些麻煩。
一、修改標識列字段的值:(在執行insert時,將ID手動的 設置成想要的值)
有時,為了實現某個功能,需要修改類型為Identity自增長類型的字段的值,但由于標識的類型所限,這種操作默認是不允許的。比如,目前數據庫有10 條正常記錄,引時刪除5條,那么如果再添加數據時,自增長的標識列會自動賦值為11,可這時如果想在插入數據時給賦值6呢,默認是不允許的。如果說想改變 主鍵標識符的值,完全由自已控制標識字段的插入,方法是有的,如下:
SET IDENTITY_INSERT [TABLE][ON|OFF]
使 用上述語句,可以方便的控制某個表的某個自增長標識列是否自動增長,也就是說是否允許你在inert一條記錄時手動指定主鍵標識列字段的值。
如果指定為ON,則可以insert時指定主鍵標識字段的值,該值不自動增長。如果使用完畢,還需使用這個語句將開關關閉到默認狀態OFF,不然下次 insert數據時該字段還是不會自動增長,要做到有始有終嘛。只是每次插入時都要手動的設置一個主鍵值,示列如下:
set identity_insert? question_title on?? //開啟手動設置
insert into question_title (f_id,f_valid,f_questionTitle) values(6,5,'hello');? //手動的向數據庫插入數據
二、重置標識列字段值:
當數據記錄被刪除一部分后,后面再添加的新數據記錄,標識列數值會有很大的空閑間隔,看上去不是很爽。即使你刪除表中全部記錄,identity標識列的 值還是會無何止的自動增加變大,而不是從頭開始增長。通過下面這條語句可以重置自增長字段的值:
DBCC CHECKIDENT(TABLE,[RESEED|NORESEED],[1])
上述語句把指定表的ID值(種子值)強制重設為1。然而,如果你不想將ID重設為1,你可以用你想用的ID值(種子值)替代第三個參數。如果你想知道當前的ID值(種子值),而不想重設標識種子,這時你就要用NORESEED,而不用再去設置第三個參數。
DBCC checkident(question_title,reseed,1)
insert into question_title (f_valid,f_questionTitle) values(5,'hello');
?
如果將表中記錄都刪除后,執行上面的一句話,這時ID的自增長值已被重設,再insert插入記錄到數據庫時,ID就可以從設置的1開始,以后每次插入的 記錄還是自動增長。
執行成功后提示如下:
--檢查標識信息: 當前標識值 '9',當前列值 '1'。
DBCC 執行完畢。如果 DBCC 輸出了錯誤信息,請與系統管理員聯系。
說明:以上顯示數據庫某表中當前ID最大值為9,當前設置的ID值為1。
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
