我在SQL Server 2012中创建了一个表,主键为自动增量。但是如何使用SQL查询从表中删除该自动增量属性?
答案 0 :(得分:10)
最简单的方法是:
SQL Server Management Studio
。Column Properties
窗口中,浏览到Identity Specification
> Is Identity
并设置为No
。 Table Designer
>选择Generate Change Script...
我喜欢使用这种方法来获取脚本,因为它允许我生成脚本,我不确定如何从头开始编写,从而学习和提高我的技能......
答案 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
..这允许将自动增量删除到关闭状态..,这样我们就必须在该列中输入值