Mozzi: Wert um einen erhöhen, MYSQL

Ich mache das gerade so:

UPDATE anzahl SET zaehler = zaehler + 1

aber es ist ja bescheuert erste den Wert auszulesen, dann zu adieren und dann wieder in die Datenbank zu schreiben.

Kann man den Wert nicht direkt in der Datenbank um eines erhöhen

Motzi

  1. Tach!

    UPDATE anzahl SET zaehler = zaehler + 1
    aber es ist ja bescheuert erste den Wert auszulesen, dann zu adieren und dann wieder in die Datenbank zu schreiben.

    Wie sonst? Dafür ist es universell und funktioniert auch mit anderen Werten als 1.

    Kann man den Wert nicht direkt in der Datenbank um eines erhöhen

    Nein. Der Wert steht ja nicht in einem Register oder einer Speicherzelle sondern im ungünstigsten Fall auf der Festplatte. Und die kennt nur Lesen und Schreiben. Rechnen muss der Prozessor. Aber wie auch immer das intern abläuft, selbst wenn es ++ oder -- in der (My)SQL-Syntax gäbe, hast du keinen Einfluss darauf, wie das intern durchgeführt wird. Also lohnt es nicht, sich weiter drüber zu ärgern.

    dedlfix.

    1. હેલો

      Wie sonst? Dafür ist es universell und funktioniert auch mit anderen Werten als 1.

      Gibt's eigentlich eine INSERT-Variante davon?

      if (!$_connect->query("INSERT INTO  
                                         `tablink` (`val`, `position`)  
                             VALUES(  
                                         '" . escape ( $_irgendwas ) . "'  
                                       , '" . escape ( LAST + 1 ) . "' -- sowas in der Richtung  
                            );  
                    ")) {  
        printf("Error: %s\n", $_connect->error);  
      }
      

      Wobei, ich bräuchte die Position von einem anderen Eintrag (den mit der höchsten Position), also käme ich um eine vorherige Abfrage wohl nicht drum?

      બાય

      --
       .
      ..:
      1. Tach!

        Gibt's eigentlich eine INSERT-Variante davon?
        Wobei, ich bräuchte die Position von einem anderen Eintrag (den mit der höchsten Position), also käme ich um eine vorherige Abfrage wohl nicht drum?

        Du kannst eine Subquery nehmen, die dir einen skalaren (=einzelnen) Wert liefert.

        dedlfix.

        1. હેલો

          Du kannst eine Subquery nehmen, die dir einen skalaren (=einzelnen) Wert liefert.

          Mit Subquerys habe ich, denke ich zumindest, noch nie gearbeitet. Das schaue ich mir mal an.

          બાય

          --
           .
          ..:
  2. Hallo,

    Kann man den Wert nicht direkt in der Datenbank um eines erhöhen

    du meinst aber nicht "auto_increment"?
    ALso eine SPalte mit einer ID die automatisch hochzählt bei jedem Eintrag?

    Gruss
    Werner