当前位置:  开发笔记 > 编程语言 > 正文

更改表以将IDENTITY设置为off

如何解决《更改表以将IDENTITY设置为off》经验,为你挑选了3个好方法。

我有一个表,它有一个列(orderid),其IDENTITY设置为true.现在我想把它关掉.如何使用ALTER COLUMN做到这一点?有点像这样吗?

ALTER TABLE MyTable
ALTER Column MyColumn SET IDENTITY OFF

Rahul Tripat.. 8

设置标识列后,您无法将删除,也无法将其设置为OFF.

您可能必须首先将数据复制到其他列(没有标识)中来删除列.因此,就像在表中添加一个新列并将现有标识列的值复制到其中.然后删除旧列(具有标识),最后将新列重命名为旧列名.



1> Rahul Tripat..:

设置标识列后,您无法将删除,也无法将其设置为OFF.

您可能必须首先将数据复制到其他列(没有标识)中来删除列.因此,就像在表中添加一个新列并将现有标识列的值复制到其中.然后删除旧列(具有标识),最后将新列重命名为旧列名.


请注意,您可以使用"设计"(右键单击SSMS中的表)并打开"列属性"面板,将标识列实际更改为"否".

2> 小智..:

您必须使用SET IDENTITY_INSERT TO ON.如果将其设置为ON,则应显式将值传递给ID列.

你为什么要关掉身份?可能是你试图传递一些明确的价值观.

请参考此处的示例演示.

-- Create tool table.
CREATE TABLE dbo.Tool
  (
     ID   INT IDENTITY NOT NULL PRIMARY KEY,
     NAME VARCHAR(40) NOT NULL
  );

GO

-- Inserting values into products table.
INSERT INTO dbo.Tool
            (NAME)
VALUES      ('Screwdriver'),
            ('Hammer'),
            ('Saw'),
            ('Shovel');

GO

-- Create a gap in the identity values.
DELETE dbo.Tool
WHERE  NAME = 'Saw';

GO

SELECT *
FROM   dbo.Tool;

GO

-- Try to insert an explicit ID value of 3;
-- should return a warning.
INSERT INTO dbo.Tool
            (ID,
             NAME)
VALUES      (3,
             'Garden shovel');

GO

-- SET IDENTITY_INSERT to ON.
SET IDENTITY_INSERT dbo.Tool ON;

GO

-- Try to insert an explicit ID value of 3.
INSERT INTO dbo.Tool
            (ID,
             NAME)
VALUES      (3,
             'Garden shovel');

GO

SELECT *
FROM   dbo.Tool;

GO

-- Drop products table.
DROP TABLE dbo.Tool;

GO 



3> 小智..:

您可以通过4个步骤完成此操作

    制作新专栏

    将数据复制到该列

    删除旧列

    将新列重命名为旧列

推荐阅读
kikokikolove
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有