Ankündigung

Einklappen
Keine Ankündigung bisher.

Mysql: Update ohne Where verhindern

Einklappen

Neue Werbung 2019

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

  • Mysql: Update ohne Where verhindern

    Hi

    Ich habe gerade ein Update-Statement ohne Where-Bedingung abgefeuert mit dem Ergebnis das jetzt alle Daten gleich sind. Gibt es eine Möglichkeit in Mysql es so einzustellen, dass Update-Statements ohne Where-Bedingung eine Fehlermeldung erzeugen oder falls nicht einen Workaround ?

    Schöne Grüße

    Arne

  • #2
    soweit ich weiß leider nicht, du musst halt bei deinen Statements aufpassen.

    Kommentar


    • #3
      Nö. Wieso sollte man nur Hämmer aus Schaumgummi verkaufen, weil sich jemand auf den Finger gehauen hat?

      Kommentar


      • #4
        Zitat von aze Beitrag anzeigen
        Hi

        Ich habe gerade ein Update-Statement ohne Where-Bedingung abgefeuert mit dem Ergebnis das jetzt alle Daten gleich sind. Gibt es eine Möglichkeit in Mysql es so einzustellen, dass Update-Statements ohne Where-Bedingung eine Fehlermeldung erzeugen oder falls nicht einen Workaround ?

        Schöne Grüße

        Arne
        Transaktionen wurden schon vor einiger Zeit erfunden.

        Andreas

        Kommentar


        • #5
          lol andreas .. Transaktionen schützen dich aber nicht "davor" - als Programmierer war er doch überzeugt, die richtige Abfrage abzufeuern - also hätte er - und hat (implizite Transaktionen) ein Commit hinterhergeschickt - und wieder wäre die Änderung permanent gewesen

          das Einzige, was mir hier einfiele wäre von Oracle ein VOLLSTÄNDIGES Transaktionslog - mit den richtigen Einstellungen zeichnet Oracle (mindestens seit Version 7 oder alle Transktionen auf - und protokolliert auch sämtliche Änderungen an Datensätzen. Im Falle des Falles kann man eine Oracle DB mit einem Backup + Transaktionslog jederzeit vollständig (*) rekonstruieren
          (*) - natürlich sind genau die Daten weg, die zum Zeitpunkt des Absturzes noch nicht ins Transaktionslog geschrieben wurden - bei Oracle wird aber das Transaktionslog zuerst befüllt, und danach erst die Tabellen aktualisiert

          nur ist dieses Procedere recht aufwändig, so dass es in Mysql zum Beispiel nicht übernommen wurde

          Kommentar


          • #6
            Zitat von eagle275 Beitrag anzeigen
            lol andreas .. Transaktionen schützen dich aber nicht "davor" - als Programmierer war er doch überzeugt, die richtige Abfrage abzufeuern - also hätte er - und hat (implizite Transaktionen) ein Commit hinterhergeschickt - und wieder wäre die Änderung permanent gewesen
            Depends. Ich hab mal, vor Jahren, händisch einen Datensatz korrigieren wollen und das WHERE vergessen. Schon nach wenigen Sekunden merkte ich meinen Fehler
            Seit dem habe ich in meiner ~/.psqlrc stehen:

            Code:
            \set AUTOCOMMIT off
            Andreas

            Kommentar


            • #7
              joa .. aus Schaden wird man klug oder so ähnlich ... wobei man ja nicht an der produktiv-Datenbank herumspielen sollte ... beim Threadersteller würde ich daher sagen .. zieh dir ne neue Kopie der ProduktivDatenbank für deine Entwicklungsumgebung , wirf die nächste Münze (erm Abfrage) rein und versuch es nochmal ...

              Kommentar

              Lädt...
              X