ERLEDIGT
JA
JA
ANTWORTEN
4
4
ZUGRIFFE
2012
2012
EMPFEHLEN
-
29.11.07 17:42 #1
- Registriert seit
- Oct 2004
- Beiträge
- 32
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
-
2 Felder unterschiedlichen Namens mit selbem Inhalt in der selben Tabelle? Sinn? Redundanz!?
Ansonsten gibts die Funktion mysql_insert_id() bzw. LAST_INSERT_ID(expr)
-
30.11.07 00:50 #3
- Registriert seit
- Oct 2004
- Beiträge
- 32
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
-
30.11.07 10:30 #4
- Registriert seit
- Oct 2004
- Beiträge
- 32
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.
-
14.11.08 11:36 #5
- Registriert seit
- Oct 2004
- Beiträge
- 32
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.
Ähnliche Themen
-
MySQL - Wert subtrahieren aus der Summer von 2 Feldern
Von proloser im Forum Relationale DatenbanksystemeAntworten: 2Letzter Beitrag: 15.08.10, 17:38 -
Mysql-Insert-Trigger - Autoincrement ID rausfinden
Von BugsBastard im Forum Relationale DatenbanksystemeAntworten: 2Letzter Beitrag: 09.07.10, 08:38 -
Mysql Update von feldern nur wenn wert...
Von Zero2000 im Forum Relationale DatenbanksystemeAntworten: 5Letzter Beitrag: 10.10.05, 16:35 -
Access - ODBC - Insert - AutoIncrement -
Von Sapperlot im Forum Relationale DatenbanksystemeAntworten: 5Letzter Beitrag: 21.07.05, 15:46 -
[MySQL 4.1] Wie bekomme ich den (Autoincrement-)Wert vom getätigten INSERT-Befehl?
Von Basti54 im Forum Relationale DatenbanksystemeAntworten: 2Letzter Beitrag: 04.05.05, 09:41





Zitieren
Login





