sql-server - 在 SQL Server 中将自动增量、主键字段从 SMALLINT 更改为 INT

标签 sql-server int primary-key auto-increment alter-column

将主键字段从 SMALLINT 更改为 INT 的最佳方式(低影响/低风险)是什么?该字段被配置为使用“身份增量”来自动增加。

我从以下 SQL 开始:

ALTER TABLE category_types ALTER COLUMN id INT NOT NULL;

但是,它会生成以下错误:

ALTER TABLE ALTER COLUMN id failed because one or more objects access this column.



还需要什么?我是否需要删除 key 然后重新创建它们?这会影响自动增量吗?

注意:表没有太多行,所以解决方案的性能并不重要。

最佳答案

我意识到这是一篇旧帖子,但以防万一有人偶然发现:jciberta 给出了一个略有错误的答案。它应该是:

-- 从 smallint 更改为 int

SET IDENTITY_INSERT category_types ON

ALTER TABLE category_types DROP CONSTRAINT CategoryTypes

ALTER TABLE category_types ALTER COLUMN id INT

ALTER TABLE category_types ADD CONSTRAINT CategoryTypesPK PRIMARY KEY (id)

SET IDENTITY_INSERT category_types OFF

关于sql-server - 在 SQL Server 中将自动增量、主键字段从 SMALLINT 更改为 INT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18006201/

相关文章:

c# - 带有 ROW_NUMBER 的 SQL 查询在 LINQ 中效率不高

sql - 生成 SQL 查询计划需要 5 分钟,查询本身的运行时间为几毫秒。这是怎么回事?

C++ int 或 double 输入

c - Matlab int16() C 等效项?

Mysql 主键不起作用?

sql - 如何获取 SQL 更新的主键?

java - 多个 Spring Batch 作业同时执行导致死锁

Java:从 char 中解析 int 值

c# - EF 4 中的标识列

sql-server - 合并复制 SQL Server 2008R2 中订阅服务器上的保留服务器文件组