我已在 SQL Server 2012 中创建了一个主键为自动增量的表。但是,我如何使用 SQL 查询从表中删除该自动增量属性呢?
我已在 SQL Server 2012 中创建了一个主键为自动增量的表。但是,我如何使用 SQL 查询从表中删除该自动增量属性呢?
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';
SQL Server Management Studio
。列属性
窗口中浏览到 标识规范
> 是否为标识
并设置为 No
。 表设计器
> 选择 生成更改脚本...
我花了很多时间寻找一个简单的解决方案来删除自动增量,因为如果我删除列和主键,这将是一件很麻烦的事情,由于该主键是另一个表中的外键,我还需要删除正在使用我的外键的数据...最终,我找到了一个非常简单的解决方案,使我的生活变得轻松:
SET IDENTITY_INSERT <table_name> ON ;
sp_rename
过程将新列重命名为自增列的名称,重新创建主键、外键,并检查是否一切都正确无误。您可以使用以下查询语句来删除“auto_increment”...
ALTER TABLE <table_name> MODIFY <auto_incremented_column_name> <column_data_type>;
ALTER TABLE STUDENT MODIFY ID INT;
添加'auto_increment'
ALTER TABLE STUDENT MODIFY ID INT AUTO_INCREMENT;
SET IDENTITY_INSERT [TABLE] OFF
.. 这允许将自动增量设置为关闭状态,以便我们必须在该列中输入值。
IDENTITY_INSERT
设置为 ON
以覆盖自动编号。此外,这并不是真正的正确解决方案,因为它没有删除列的身份规范,并且未来可能会打开它,带来潜在的不良或甚至危险后果。 - Steve Pettifer