2017-05-06 2 views
0

je besoin de mettre à jour la table qui ressemble à ceci:Erreur de mise à jour - mêmes valeurs de clé primaire

enter image description here

clé primaire est composite - id_planu et por_cislo.

Lors de l'ajout d'une nouvelle ligne, par ex. id_planu = '8' AND por_cislo = '5', je dois augmenter toutes les lignes ayant por_cislo > 5 comme por_cislo = por_cislo+1

Il y a un problème parce que quand je fais ça:

UPDATE table SET por_cislo = por_cislo+1 WHERE id_planu = '8' AND por_cislo > '5' 

il est mis en valeur de por_cislo = '7' où il était '6'. Donc, il y a deux lignes avec la même valeur de clé primaire (8,7) qui est la raison de l'erreur que je reçois.

Comment dois-je faire de la bonne façon?

+0

Modification d'une clé primaire ne semble pas une bonne idée. Vous ne voulez pas réutiliser une clé pour un autre enregistrement et tout bousculer pour s'adapter. Il suffit de générer un nouvel enregistrement avec une nouvelle clé, ne pas réutiliser vieux. – Glenn

Répondre

0

Tout ce que vous avez besoin est d'ajouter ORDER BY article comme suit: UPDATE table SET por_cislo = por_cislo+1 WHERE id_planu = '8' AND por_cislo > '5' ORDER BY por_cislo DESC