将特定的硬编码值添加到计算列中的某些行

问题描述:

是否有可能更改计算列的某些值?我们需要它,因为这些值连接到另一个系统,其中三个必须更改。将特定的硬编码值添加到计算列中的某些行

我们的计算列如下:

('Product-'+CONVERT([NVARCHAR](100),(1000)+[Id],(0))) 

我现在必须改变价值观Product-1356Product-1655Product-1701Product-12Product-17Product-18(例如值)。这三个必须进行硬编码。剩下的必须像以前一样计算。

我试过正常使用T-SQL更新它:

UPDATE MyTable 
SET ProductId = 'Product-12' 
WHERE ProductId = 'Product-1356' 

但现在我发现了以下错误:

The column "ProductId" cannot be modified because it is either a computed column or is the result of a UNION operator.

而且更新Id列,因为没有工作它是主键:

Cannot update identity column 'Id'.

我该怎么做?它甚至有可能吗?

两个选项,我能想到的:

  1. 删除这些行,并将它们与正确的ID重新添加。
  2. 设置一个ProductIdOverride的新列,并在其中放入任何硬编码的ID。如果要使用现有公式,请保留Null。然后将您的计算列更改为COALESCE(ProductIdOverride, ('Product-'+CONVERT([NVARCHAR](100),(1000)+[Id],(0))))