2016-09-30 1 views
0

Y a-t-il une possibilité de modifier certaines valeurs d'une colonne calculée? Nous en avons besoin parce que les valeurs sont connectées à un autre système et trois d'entre elles doivent être changées.Ajouter des valeurs codées en dur spécifiques à certaines lignes d'une colonne calculée

Notre colonne calculée ressemble à ceci:

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

Je dois maintenant changer les valeurs Product-1356, Product-1655 et Product-1701 à Product-12, Product-17 et Product-18 (valeurs par exemple). Ces trois doivent être codés en dur. Le reste doit être calculé comme avant.

J'ai essayé la mise à jour normalement en utilisant T-SQL:

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

Mais maintenant, je reçois l'erreur suivante:

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

mise à jour également la colonne Id ne fonctionne pas parce que c'est la clé primaire:

Cannot update identity column 'Id'.

Comment est-ce que je peux faire ceci? Est-ce même possible?

Répondre

2

Deux options que je peux penser:

  1. supprimer ces lignes et les ajouter à nouveau avec le code correct.
  2. Définissez une nouvelle colonne de ProductIdOverride et insérez les ID codés en dur dans cette colonne. Laissez Null lorsque vous voulez que la formule existante soit utilisée. Ensuite, modifiez la colonne calculée en COALESCE(ProductIdOverride, ('Product-'+CONVERT([NVARCHAR](100),(1000)+[Id],(0))))