2010-09-21 48 views
1

我有SQL Server 2008中的表。它有empId,它是類型的int。現在不是身份。我想編寫查詢(以便我可以維護數據庫中的更改記錄)將此列作爲標識列。該表目前沒有數據。SQL查詢表上的身份密鑰

回答

3

它可以做到但不容易。據this article,如果你通過SSMS做到這一點,然後生成一個腳本,基本上是:

  1. 作爲 例1中創建類似的表結構,說Tmp_Example1與 標識列。
  2. 集IDENTITY_INSERT ON的新表 只是created.Step 3:從插入到示例1所有Tmp_Example1值
  3. SET IDENTITY_INSERT OFF上 Tmp_Example ..
  4. 跌落例1(這是怎麼回事... 下探我們原來的表???)
  5. 將Tmp_Example1重命名爲Example1。 提交事務

如果這個表不具有任何數據就像你說的,那麼你可能會更好過只是這樣通過SSMS(我的文章鏈接中提供的步驟)。你有沒有理由使用SQL來做這件事?

UPDATE

我讀an article其他用戶發佈的時間較早,發現這裏面似乎比我上面的方法要容易得多:

ALTER TABLE SOURCE_TB ADD ID_II INT IDENTITY(1,1) 
ALTER TABLE SOURCE_TB DROP COLUMN ID 
EXEC sp_rename 'SOURCE_TB.ID_II' ,'ID','COLUMN' 

但同樣,這可能更有意義做這通過SSMS。不過很高興知道...

+0

+1好一個............... – 2010-09-21 05:53:19

+0

@Pranay,我正在閱讀你之前發佈的文章,他們有我在我的更新中發佈的代碼,似乎工作。我認爲你的解決方案中有不同於此的東西? – 2010-09-21 05:55:15

+0

我同意這一點,但一些我想更新現有的列。我知道這樣做不會有什麼影響,但是。想要純粹的改變表格,並且想要設置標識。這是錯誤的 - 然後重新創建。 sql服務器必須有這樣的設施才能將列屬性更改爲標識。 – 2010-09-21 06:02:27

1

您沒有數據,因此將表格編寫爲drop並重新創建。將該字段更改爲Employeeid int identity(1,1)不爲null。然後重新創建表格。沒有大驚小怪。