将主键字段从 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/