Start/End Punkt



  • Hi,
    Erstmal, ich benutze eine mySQL Datenbank und schreibe einen Client in MFC dafür. Jetzt muss ich x Zeilen Updaten, wenn ein Update davon allerdings fehlschlägt (INet verbindung weg, übertragungsfehler oder was auch immer) müssen alle anderen Updates auch wieder auf den vorherigen Wert. Also:
    Startpunkt -> Query1, Query2, Query3 wenn alle Querys Ok, dann->Endpunkt, ansonsten wieder zu Startpunkt zurück. Also änderungen werden nur übernommen, wenn alle querys ok sind

    Für Hilfe oder auch nur Stichworte wonach ich suchen muss wäre ich sehr dankbar _

    Edit: Mir fällt grade ein, das ich sagen sollte, das ich nicht ODBC benutze sondern die API von mySQL



  • Oracle benutzen.... xD

    Scherz bei Seite...
    So etwas musst du, wenn ichs recht im Kopf habe selber machen.. Also ungefähr nach dem Prinzip:

    Alle Datensätze abfrage und speichern
    Änderungen machen
    Wenn fehler
    -> lade alte datensätze
    -> Update mit alten werten.

    Is natürlich was umständlich... aber ob es anders geht, weiss ich nicht...



  • ALso gibt halt bei MySQL keine Möglichkeit das Serverseitig zu machen (wie oracle). Deshalb muss es auf dem client passieren.

    Allerdings, wenn das ja quasi zusammengehörende Daten sind kann man die vielleicht in einer einzelnen update anweisung ausführen...?
    Dann klappt es, oder nicht...

    ach ja.. oben die lösung is natürlich net optimal.. weil wenn inet verbidung tot, dann auch keine alten daten mehr zurück einfügen...

    Wenn so wichtig ist, vielleicht ne 2 Tabelle mit gleichem inhalt, die dann nach dem Update transferiert wird....
    hmm ne auch net so das wahre..



  • Hm, Ich denke dann werde ich es mit einer Update anweisung lösen. Das wir ne lange Update anweisung *g*
    Aber danke für die schnelle Antwort.

    Edit: Hätte da aber doch nochmal eine Frage: Wenn ich jetzt mehrere Zeilen updaten will, zwar immer dieselbe Spalte nur immer mit einem anderen Wert, wie kann ich das machen? (In Zeile 1, Spaltenwert-100, in Zeile2 Spaltenwert-55, Spaltenwert3-0 etc etc)



  • Hmm.. ne ich glaub das geht nicht in einem Query.. 😕

    Hatte jetzt gedacht, es wären immer die selben Änderungen (Weil in der ersten Überlgung macht es sonst keinen sinn, das sich entweder ale oder keien ändern..)



  • du brauchst transaktionen
    http://dev.mysql.com/doc/mysql/en/COMMIT.html

    erst nach einem commit (transaktionsende) werden die aenderungen gueltig.



  • Das scheint genau das zu sein was ich Suche. Danke Danke Danke. _
    Und tschuldigung falls das Problem etwas schwammig erklärt wurde _



  • Das geht aber nicht mit MyISAM-Tabellen. Da brauchst du eine anderen Tabellentyp.

    z.B.
    InnoDB

    Dieser unterstützt Transaction



  • Ja, hab ich auch grad im Manual gelesen. Aber wenigstens weiß ich jetzt wonach ich suchen muss, da ist das ganze Vorhaben nicht mehr ganz so kompliziert *G*



  • Oh, das gibt es doch schon bei MySQL?
    Dann war's mein Fehler *wieder was gelernt*


Anmelden zum Antworten