tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
4
ZUGRIFFE
2012
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    HerbertXXL HerbertXXL ist offline Mitglied Bronze
    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. #2
    Admi Admi ist offline Mitglied Brokat
    Registriert seit
    Jan 2005
    Beiträge
    330
    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)
     

  3. #3
    HerbertXXL HerbertXXL ist offline Mitglied Bronze
    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
     

  4. #4
    HerbertXXL HerbertXXL ist offline Mitglied Bronze
    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.
     

  5. #5
    HerbertXXL HerbertXXL ist offline Mitglied Bronze
    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

  1. MySQL - Wert subtrahieren aus der Summer von 2 Feldern
    Von proloser im Forum Relationale Datenbanksysteme
    Antworten: 2
    Letzter Beitrag: 15.08.10, 17:38
  2. Mysql-Insert-Trigger - Autoincrement ID rausfinden
    Von BugsBastard im Forum Relationale Datenbanksysteme
    Antworten: 2
    Letzter Beitrag: 09.07.10, 08:38
  3. Mysql Update von feldern nur wenn wert...
    Von Zero2000 im Forum Relationale Datenbanksysteme
    Antworten: 5
    Letzter Beitrag: 10.10.05, 16:35
  4. Access - ODBC - Insert - AutoIncrement -
    Von Sapperlot im Forum Relationale Datenbanksysteme
    Antworten: 5
    Letzter Beitrag: 21.07.05, 15:46
  5. Antworten: 2
    Letzter Beitrag: 04.05.05, 09:41