将数据类型更改为 Sql Server 中聚集主键的一部分

问题描述 投票:0回答:1

我需要更改属于聚集键一部分的列的数据类型 我在帖子中看到,最好的方法是创建一个具有所需类型的新列,将数据从原始列移动到那里,然后删除原始列并将新列重命名为原始列的名称。 我的问题是,这会不会有问题,因为该列是主键的一部分? 如何在不删除/添加 pk 的情况下执行此操作? 谢谢,

ALTER TABLE dbo.ff
ADD SSN binary(32) NOT NULL

--set encrypted data
UPDATE dbo.ff
   SET SSN = [dbo].[gg(PassId)

ALTER TABLE dbo.ff
DROP COLUMN PassId

EXEC sp_RENAME '[dbo].[ff].SSN' , 'PassId', 'COLUMN'


END
GO
sql sql-server primary-key
1个回答
0
投票

尝试这个(根据需要正确)可以在不删除或添加主键约束的情况下这样做

--添加新栏 --然后我们更新这个表 --然后更新主键 --删除原始列 --并重命名新列 更改表 dbo.ff ADD NewColumn 二进制(32) NOT NULL;

UPDATE dbo.ff
SET NewColumn = [dbo].[gg(PassId)];

ALTER TABLE dbo.ff
DROP CONSTRAINT PK_ff;
ALTER TABLE dbo.ff
ADD CONSTRAINT PK_ff PRIMARY KEY (NewColumn);

ALTER TABLE dbo.ff
DROP COLUMN PassId;

EXEC sp_RENAME '[dbo].[ff].NewColumn' , 'PassId', 'COLUMN';
© www.soinside.com 2019 - 2024. All rights reserved.