2010-05-25 110 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,否则当您尝试执行时会导致错误消息。