2010-05-25 83 views
1

我已創建一個表,其中employee id作爲標識列。現在,我想刪除身份並將數據類型替換爲bigint。我正在使用Sql Compact版本。如何實現這一目標?如何從表中刪除標識列

+1

Wil試圖讓更高.. Im新到這個論壇 – Shiny 2010-05-25 07:20:16

+0

重複:[SQL Server如何從列中刪除身份](http://stackoverflow.com/questions/702745/sql-server-how-to- drop-identity-from-a-column) – 2010-05-25 11:51:06

+0

使用此方法定義於 http://stackoverflow.com/questions/702745/sql-server-how-to-drop-identity-from-a-column – Vandana 2012-07-09 10:59:29

回答

0

在「真正的」SQL Server中,您必須執行這些步驟 - 不確定SQL Server CE是否允許相同,但請試一試!我假設你也可能在那一欄上有你的PRIMARY KEY約束 - 對吧?如果不是,你不需要做第一步和最後一步。而且我假設你想再次在列上標識IDENTITY,對吧?

-- DROP the primary key constraint (if you have that on your column) 
ALTER TABLE dbo.Employees 
DROP CONSTRAINT PK__Employees__3214EC274222D4EF 

-- ALTER the datatype into BIGINT 
ALTER TABLE dbo.Employees 
ALTER COLUMN Employee_ID BIGINT 

-- set PK constraint again 
ALTER TABLE dbo.Employees 
ADD CONSTRAINT PK_Employees PRIMARY KEY(Employee_ID) 
3

我不相信你可以使用T-SQL,從欄中刪除IDENTITY屬性。 相反:

  1. 添加新BIGINT列表
  2. 複製從當前標識字段中的數據到新的領域
  3. 除去現有列
  4. 新列重命名爲正確的名稱

您可以在表格的設計視圖中的SSMS中執行此操作。我相信在幕後它會像上面那樣做。

更新: 要確認,在SSMS 2K8當您嘗試從列刪除IDENTITY屬性,然後將其保存,它實際上正是由SQL事件探查器監視重新創建表(你可以看到它做什麼)。爲了在SSMS中執行此操作,需要確保在「工具」 - >「選項」 - >「設計器」 - >「表和數據庫設計器」中將「禁止保存需要重新創建表的更改」選項設置爲OFF。我認爲它默認爲ON,否則當您嘗試執行時會導致錯誤消息。