将特定的硬编码值添加到计算列中的某些行
问题描述:
是否有可能更改计算列的某些值?我们需要它,因为这些值连接到另一个系统,其中三个必须更改。将特定的硬编码值添加到计算列中的某些行
我们的计算列如下:
('Product-'+CONVERT([NVARCHAR](100),(1000)+[Id],(0)))
我现在必须改变价值观Product-1356
,Product-1655
和Product-1701
到Product-12
,Product-17
和Product-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'.
我该怎么做?它甚至有可能吗?
答
两个选项,我能想到的:
- 删除这些行,并将它们与正确的ID重新添加。
- 设置一个ProductIdOverride的新列,并在其中放入任何硬编码的ID。如果要使用现有公式,请保留Null。然后将您的计算列更改为
COALESCE(ProductIdOverride, ('Product-'+CONVERT([NVARCHAR](100),(1000)+[Id],(0))))