2013-10-09 352 views
3

主鍵到現有的表我有8000行數據的表,將增加更多。但我忘了在開始時輸入主鍵。這樣每一行都有唯一的密鑰。後來我添加了一個主鍵列。但該列現在是NULL。添加自動遞增在SQL Server 2005

我想的第一行開始於ID爲1,增加一路攀升到最後一行ID 8000如何使用單個查詢更新所有行的?

我使用SQL Server 2005的

+3

你是怎麼添加主鍵列? 您需要設置身份種子和增量值,您是否這樣做? 如果添加標識,該列不會爲空,它會自動生成值 – Appyks

+0

可能的重複[忘記將主鍵列添加爲標識](http://stackoverflow.com/questions/18996250/forgot-to- add-primary-key-column-as-identity) – Nithesh

+0

@Nithesh ..在你標記爲重複的鏈接..我想它說如何添加主鍵..但問題是如何填充NULL值PK字段在單個查詢中遞增。 – pordi

回答

2

打開表設計,添加新列u要選擇在標識規範列和屬性使(是身份)是.. 您可以從您希望通過設置標識種子屬性,默認情況下它從開始啓動。

如果您已經標識列ü也可以更新它。
第1步:從表設計中的列中刪除標識規範。
步驟2:使用光標更新表格列,從1開始。
步驟3:再次應用表格設計中的列標識規範
步驟4:通過查詢重置標識列,從值u want。 e.g
DBCC CHECKIDENT("TableName",Reseed,8000);
所以下一個標識值將是8001

enter image description here

+0

這真的很奏效....我解決了t ..謝謝你ppl ... – user2541172

0
CREATE TABLE [dbo].[TheTable](
    [TheID] [int] IDENTITY(1,1) NOT NULL, 
    [TheColumn] [nvarchar](100) NOT NULL, 
CONSTRAINT [PK_TheTable] PRIMARY KEY CLUSTERED 
(
    [TheID] ASC 
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] 
) ON [PRIMARY] 


INSERT INTO [dbo].[TheTable] 
     ([TheColumn]) 
SELECT 'one' 
UNION 
SELECT 'two' 

SELECT * FROM [dbo].[TheTable] TT 
0

您可以根據唯一的密鑰更新表。 申報@i INT = 1個 而(@i < =(選擇從表COUNT(*))) 開始

更新表 設置primary_key_column = @我 凡

設置@我= @我+1 結束

1

根據您的要求,你只需要一個SQL查詢,將更新爲新的主鍵值整個表以增量方式。這裏是:

UPDATE myTable 
SET ID = ID + 1 

其中ID爲PK字段名

更新一次,不要忘了添加標識列,如下圖所示:

ALTER TABLE table 
ADD ID INT IDENTITY 

ALTER TABLE table 
ADD CONSTRAINT PK_table 
PRIMARY KEY(ID) 
1

擺脫你剛纔添加的列。然後運行這個

ALTER TABLE table 
ADD ID INT IDENTITY 

ALTER TABLE table 
ADD CONSTRAINT PK_table 
PRIMARY KEY(ID)