MySQL: Zwei Feldern bei Insert den Autoincrement-Wert zuweisen

HerbertXXL

Mitglied
Hallo!
Ich habe eine Tabelle die neben einem unique Feld id (int) auch ein Feld ordervalue (int) hat.

Das Feld id ist autoincrement, ich möchte nun gerne, dass bei einem Insert, dem Feld ordervalue der gleiche Wert zugewiesen wird wie dem Feld id.

Hat jemand eine Idee für eine einfache Lösung?
Bisher hole ich mir vor einem Insert immer Select max(id) und weise es (natürlich +1) ordervalue zu, aber irgendwie kann ich nicht glaube, dass das die Lösung ist :)

Ich wäre dankbar für einen Tipp, oder auch die Bestätigung, dass es nicht einfacher geht.

Vielen Dank im voraus
der Herbert
 
Danke erstmal für die Antwort, mit LAST_INSERT_ID() hatte ich im phpMyAdmin immer meine Probleme, gibt immer nur '0' zurück, wenn ich ein SQL-Statement absetze.

Hab es aber gerade mal auf der Konsole getestet und da gehts wie gewünscht.
Sollte also eigentlich genau das seine was ich suche, werde es morgen mal gründlich in der Anwendung testen.

Ach und das mit der Redundanz, der ordervalue darf im Gegensatz zur id durchaus geändert werden :)

Gruß zur Nacht
der Herbert
 
Soweit ich das jetzt verstanden habe, geben die beiden Funktionen nur den Autoincrement-Wert zurück, der bei dem letzten Insert-Statement, der aktuellen Datenbankverbindung, hinzugefügt wurde.

Da phpMyAdmin bei jeder Anfrage eine neue Verbingung erstellt kommt auch immer 0 zurück.

Außerdem ist es natürlich nicht der gewünschte Wert, wenn das letzte Insert auf einer anderen Tabelle stattfand.

Mit anderen Worten: über LAST_INSERT_ID() bekomme ich den gewünschten Wert erst nach dem INSERT, ich brauche ihn aber vorher.
 
falls doch mal jemand auf den Thread stößt...

habe mich inzwischen doch mal daran erinnert wie man richtig ordnet, speichere jetzt statt eines Sortierwertes den Nachfolger, also eine verkettete Liste, das dürfte in den meisten Fällen die beste Lösung sein. Man muss dann zwar beim Einfügen oder Löschen immer zwei Einträge anfassen, dafür vereinfacht sich auch das Einfügen hinter einem bestimmten Wert oder das verschieben um n-Positionen nach oben oder unten, da man auch nie mehr als zwei Einträge ändern muss.
 
Zurück