2016-09-30 37 views
0

是否有可能更改計算列的某些值?我們需要它,因爲這些值連接到另一個系統,其中三個必須更改。將特定的硬編碼值添加到計算列中的某些行

我們的計算列如下:

('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'.

我該怎麼做?它甚至有可能嗎?

回答

2

兩個選項,我能想到的:

  1. 刪除這些行,並將它們與正確的ID重新添加。
  2. 設置一個ProductIdOverride的新列,並在其中放入任何硬編碼的ID。如果要使用現有公式,請保留Null。然後將您的計算列更改爲COALESCE(ProductIdOverride, ('Product-'+CONVERT([NVARCHAR](100),(1000)+[Id],(0))))