Anzeige:
Ergebnis 1 bis 5 von 5

Thema: probleme mit bedingungsformulierung...

  1. #1
    Registrierter Benutzer
    Registriert seit
    01.05.2001
    Beiträge
    89

    probleme mit bedingungsformulierung...

    hallo leute,

    ich möchte in einem skript daten in eine datenbank eintragen, habe aber die WHERE-clausel noch nicht ausreichend definiert bekommen... diese soll folgendes bewirken:

    es soll der nur letzte datensatz aktualisiert werden, die datensätze sind durchnummeriert (ID mit auto_increment) -> datensatz mit der höchsten ID.
    der datensatz soll nur dann aktualisiert werden, wenn in spalte xy der wert 0 steht.

    wie formuliert man das gescheit?

    danke, gruss picard

  2. #2
    Registrierter Benutzer
    Registriert seit
    22.06.1999
    Beiträge
    677
    Lösung: subselect in der WHERE-Klausel.
    Code:
    update tbl set x='y' where nr = (select max(nr) from tbl);
    Das klappt übrigens sogar im Transaction Isolation Level
    "Read Committed", weil auch dann ein einzelnes SQL-Stetement in einer
    eigenen Transaktion läuft und damit einen konsistenten Zustand sieht.
    (Im allgemeinen ist der Isolationsgrad "Serializable" natürlich sicherer).

  3. #3
    Registrierter Benutzer Avatar von Gaert
    Registriert seit
    09.05.2002
    Ort
    Nußloch
    Beiträge
    1.317
    Hallo!

    Fehlt nur noch die Bedingung mit dem xy=0

    UPDATE tbl SET x='y' WHERE rr = (SELECT max(nr) FROM tbl) AND xy=0;

    ... wenn ich "auto_increment" lese muss ich an mysql denken. Mit mysql wird das nicht funktionieren, weil es keine Subselects unterstützt.


  4. #4
    Registrierter Benutzer
    Registriert seit
    01.05.2001
    Beiträge
    89
    da liegst du richtig... ich verwende mysql...

    wenn das da nicht unterstützt wird, wie kann man das dann machen?

  5. #5
    Registrierter Benutzer
    Registriert seit
    09.04.2003
    Beiträge
    17
    indem du dein Script so schreibst, dass es zwei separate Aufrufe dafür verwendet:
    $a=select max(nr) from bla;
    UPDATE tbl SET x='y' WHERE rr = $a;

    HTH

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •