Bevor Update alte Daten Archivieren MYsql

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Bevor Update alte Daten Archivieren MYsql

    Hallo Leute,

    ich habe eigentlich ein einfaches Problem, ich habe einen datensatz in Mysql der geupdatet werden soll, wenn aber eine Änderung der daten vorgenommen wird, soll der alte Wert in eine andere tabelle kopiert werden, falls der neue Wert falsch ist und ich diesen wieder brauche!

    mein problem besteht jetzt darin, das das updatet Formular auf einer Seite drauf ist, welche gleichzeitig die Startseite ist und mit meinem Script:
    SELECT * FROM Tabellen WHERE id = $_POST['id']
    Und dann per insert in die Neue Tabelle, aber der Datensatz ist sehr lang über 60 Spalten, daher wollte ich nur die geänderten Werte abspeichern und auch nur wenn was geändert wurde!
    Zurzeit macht er jedes Mal ein Backup des ganzen Querys und das jedes Mal beim betreten der Seite! Archiv ist nun schon größer als die eigentliche tabelle.

    Wenn jemand eine Idee hat und mir helfen kann würde ich mich sehr freuen!

    Danke im Voraus!

    Mit freundlichen Grüßen
    Plutarch

  • #2
    Wie was wo? Poste mal bitte die beiden Tabellenstrukturen und was genau wohin kopiert werden soll, wenn welche Bedingungen zutreffen.
    Vielleicht an einem Fallbeispiel.

    Kommentar


    • #3
      Also hier mal kurz zur Erläuterung!

      gekürzte Fassung weil es sonst zulang wäre:


      Tabelle infos
      ID | User | WERT 1 | WERT2 | WERT3 | WERT4
      ----------------------------------------------------------
      1 | 20 | 44 | 33 | 64 | 98

      Wenn jetzt jemand ein update dieser Werte vornimmt soll der alte Datensatz in die Tabelle save kopiert werden.
      Also ändert ein User WERT2 auf 10 soll das dann so aussehen

      Tabelle infos
      ID | User | WERT 1 | WERT2 | WERT3 | WERT4
      ----------------------------------------------------------
      1 | 20 | 44 | 10 | 64 | 98

      Tabelle save
      ID | User | WERT 1 | WERT2 | WERT3 | WERT4 | DATUM
      ------------------------------------------------------------------------
      1 | 20 | | 33 | | | Curdate()

      Das soll am Ende also rauskommen. Ich hoffe es ist Verständlich ich weis nicht wie ich es anders beschreiben soll.

      Mit freundlichen Grüßen
      Plutarch
      Zuletzt geändert von Plutarch; 21.07.2005, 15:48.

      Kommentar


      • #4
        Falls es nur eine Art Backup für den Notfall sein soll, genügt ausführliches Logging der abgesetzten Queries.
        Aber wahrscheinlich willst du die Änderungen einzeln rückgängig machen können, falls mal jemand Mist eingibt.

        Ich sehe nur leider das Problem nicht.
        Welche Attribute geändert werden sollen, kannst du durch einen Vergleich der bisherigen mit den neuen Werten feststellen. Dann weißt du auch, was in die zweite Tabelle geschrieben werden muß.
        Anschließend trägst du die Änderungen noch in die erste Tabelle ein. Fertig.
        Das geht imho nicht in einer einzigen Query, ich würde also einmal den Datensatz lesen, mit dem durch das Formular übergebenen vergleichen, für sich unterscheidende Werte den alten in die 2. Tabelle speichern und zuletzt die Formularwerte in die 1. Tabelle schreiben.
        Kein Problem.

        Kommentar


        • #5
          Das geht ja auch soweit, aber er braucht mittlerweile knapp 20 Sekunden zum ausführen dieses Scripts und das ist eindeutig zulange, eigentlich dachte ich man kann das vereinfachen!

          Mit freundlichen Grüßen
          Plutarch

          Kommentar


          • #6
            Zeig doch mal deinen Code, da läßt sich sicher noch ein Quentchen rausholen.

            Kommentar

            Lädt...
            X