我需要更改属于聚集键一部分的列的数据类型 我在帖子中看到,最好的方法是创建一个具有所需类型的新列,将数据从原始列移动到那里,然后删除原始列并将新列重命名为原始列的名称。 我的问题是,这会不会有问题,因为该列是主键的一部分? 如何在不删除/添加 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
尝试这个(根据需要正确)可以在不删除或添加主键约束的情况下这样做
--添加新栏 --然后我们更新这个表 --然后更新主键 --删除原始列 --并重命名新列 更改表 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';