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

use*_*120 11 sql sql-server sql-server-2012

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

Ste*_*fer 12

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

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';
Run Code Online (Sandbox Code Playgroud)


Avi*_*ner 11

最简单的方法是:

  1. 打开SQL Server Management Studio.
  2. 找到服务器>数据库>表.
  3. 右键单击表>选择设计.
  4. 在设计窗口中,突出显示要修改的列.
  5. Column Properties窗口中浏览到Identity Specification> Is Identity并设置为No.
  6. 转到工具栏菜单Table Designer>>选择Generate Change Script...
  7. 沃拉,你得到了所要求的脚本.

我喜欢使用这种方法来获取脚本,因为它允许我生成脚本我不知道如何从头开始编写,从而学习和提高我的技能......

在此输入图像描述

  • 我收到“不允许保存更改...” (2认同)

Chr*_*Sim 6

我搜索了很多找到一个简单的解决方案来删除自动增量因为如果我删除列和主键是另一个表上的外键我应该做很多工作我应该删除使用我的外键的数据...最后我得到了一个非常简单的解决方案,让我的生活变得轻松:

SET IDENTITY_INSERT <table_name> ON ;
Run Code Online (Sandbox Code Playgroud)


dea*_*ean 5

如果它是主键列,则必须先删除PK。如果有任何表引用它,那么您必须删除这些FK才能删除PK。之后,添加另一个相同类型的列,使用Identity列中的值对其进行更新,删除Identity列,将新列重命名为Identity列的名称(使用sp_rename过程),重新创建PK,重新创建FK,检查如果一切顺利。

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