如何从表中删除标识列

时间:2010-05-25 07:15:47

标签: sql-server sql-server-ce

我创建了一个以employee id作为标识列的表。现在,我想删除标识并将数据类型替换为bigint。我正在使用Sql Compact版。怎么做到这一点?

3 个答案:

答案 0 :(得分:3)

我不相信您可以使用TSQL从列中删除IDENTITY属性。 代替:

  1. 向表中添加新的BIGINT列
  2. 将数据从当前IDENTITY字段复制到新字段
  3. 删除现有列
  4. 将新列重命名为正确的名称
  5. 您可以在表格的“设计”视图中的SSMS中执行此操作。我相信它在幕后做了类似的事情。

    <强>更新 要确认,在SSMS 2K8中,当您尝试从列中删除IDENTITY属性然后保存它时,它将实际重新创建表(您可以通过在SQL事件探查器中进行监视来查看它的确切功能)。要在SSMS中执行此操作,您需要确保在Tools-&gt;中关闭“防止需要重新创建表的保存更改”选项。选项 - &gt;设计师 - &gt;表和数据库设计师。我认为它默认为ON,否则会在尝试执行此操作时导致错误消息。

答案 1 :(得分: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)

答案 2 :(得分:0)