2017-05-06 2 views
0

Ich brauche Tabelle zu aktualisieren, wie folgt aussehen:Update-Fehler - gleiche Werte von Primärschlüssel

enter image description here

Primärschlüssel ist composite - id_planu und por_cislo.

Beim Hinzufügen neuer Zeile z. id_planu = '8' AND por_cislo = '5', ich brauche por_cislo > 5 wie alle Zeilen zu erhöhen, mit por_cislo = por_cislo+1

Es gibt ein Problem, weil, wenn ich das tun:

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

dort Wert von por_cislo = '7' gesetzt wird, wo es '6' war. Es gibt also zwei Zeilen mit dem gleichen Wert des Primärschlüssels(), der der Grund für den Fehler ist, den ich erhalte.

Wie soll ich das richtig machen?

+0

einen Primärschlüssel ändern klingt nicht wie eine gute Idee. Sie möchten nicht einen Schlüssel für einen anderen Datensatz wiederverwenden und alles stoßen, um Platz zu schaffen. Erzeugen Sie einfach einen neuen Datensatz mit einem neuen Schlüssel, verwenden Sie ihn nicht erneut. – Glenn

Antwort

0

Alles, was Sie brauchen, ist ORDER BY Klausel hinzuzufügen, wie folgt vor: UPDATE table SET por_cislo = por_cislo+1 WHERE id_planu = '8' AND por_cislo > '5' ORDER BY por_cislo DESC

Verwandte Themen