2016-09-30 19 views
0

計算された列の値を変更する可能性はありますか?値は別のシステムに接続されており、そのうち3つを変更する必要があるため、この値が必要です。計算された列の一部の行に特定のハードコードされた値を追加する

私たちの計算列は次のようになります。

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

が、私は今の値Product-1356Product-1655Product-1701Product-12に、Product-17Product-18(例値)を変更する必要があります。これらの3つはハードコードされている必要があります。残りの部分は以前と同じように計算する必要があります。

私は通常、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))))
に変更します
関連する問題