如何从sql server 2012中的表中删除自动增量

时间:2014-05-07 07:22:42

标签: sql sql-server sql-server-2012

我在SQL Server 2012中创建了一个表,主键为自动增量。但是如何使用SQL查询从表中删除该自动增量属性?

4 个答案:

答案 0 :(得分:10)

最简单的方法是:

  1. 打开SQL Server Management Studio
  2. 找到服务器>数据库>表
  3. 右键单击表>选择设计。
  4. 在设计窗口中,突出显示要修改的列。
  5. Column Properties窗口中,浏览到Identity Specification> Is Identity并设置为No
  6. 转到工具栏菜单> Table Designer>选择Generate Change Script...
  7. Walla,你收到了所要求的剧本。
  8. 我喜欢使用这种方法来获取脚本,因为它允许我生成脚本,我不确定如何从头开始编写,从而学习和提高我的技能......

    enter image description here

答案 1 :(得分:10)

如果您需要将数据保留在该列中,那么在表上创建一个具有相同类型(但名称不同)的新列,将要删除的列中的数据复制到新列中,删除旧列并重命名新列。完整的例子:

CREATE TABLE test(col1 INT IDENTITY (1,1) NOT NULL, col2 VARCHAR(10) NULL);

ALTER TABLE test ADD col3 INT NULL;

UPDATE test SET col3 = col1;

ALTER TABLE test DROP COLUMN col1;

EXEC sp_rename 'dbo.test.col3', 'col1', 'COLUMN';

答案 2 :(得分:4)

如果它是主键列,则必须首先删除PK。如果有任何引用它的表,那么你将不得不放弃这些FK以便能够丢弃PK。之后,添加另一个相同类型的列,使用identity列中的值更新它,删除标识列,将新列重命名为identity列的名称(使用sp_rename过程),重新创建PK,重新创建FK,检查一切是否正确。

我在生产数据库上非常小心。确保在您执行此操作时没有人可以访问数据。

答案 3 :(得分:1)

SET IDENTITY_INSERT [TABLE] OFF ..这允许将自动增量删除到关闭状态..,这样我们就必须在该列中输入值

相关问题