Heinz: Gibts auch select ... insert ?

Hi,

es gibt ja eine update..insert Syntax.

Gibt es auch die Möglichkeit, einen Datensatz einzutragen, falls im SELECT keiner gefunden wird?

Normalerweise würd ich einen SELECT ausführen und bei (mysql_num_rows = 0) einen INSERT ausführen.

Frage ist aso, ob das auch in einer einzigen Query geht?

Gruß, Heinz

  1. Hi,

    es gibt ja eine update..insert Syntax.

    Hä?

    Gibt es auch die Möglichkeit, einen Datensatz einzutragen, falls im SELECT keiner gefunden wird?

    INSERT … SELECT - mit entsprechender Bedingung.

    MfG ChrisB

    --
    RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
  2. Tach!

    es gibt ja eine update..insert Syntax.

    Welche sollte das sein?

    Gibt es auch die Möglichkeit, einen Datensatz einzutragen, falls im SELECT keiner gefunden wird?

    Du könntest INSERT ... SELECT nehmen und dabei in der SELECT-Klausel nicht Felder sondern Daten als Strings angeben und eine WHERE-NOT-Bedingung angeben.

    Normalerweise würd ich einen SELECT ausführen und bei (mysql_num_rows = 0) einen INSERT ausführen.

    Das erzeugt üblicherweise ein TOCTTOU-Problem in Mehrbenutzerumgebungen. Besser ist es üblicherweise, wenn du einen Unique-Index über die Felder anlegst (ja, ein Index über mehrere Felder), deren Werte nicht doppelt vorkommen sollen. Ein Insert-Statement lässt du dann einfach so gegen die Tabelle laufen. Im Falle dass die Daten bereits vorhanden sind, bekommst du eine Unique-Constraint-Verletzung als Fehlermeldung präsentiert. Auf diese kannst du gezielt anhand ihrer Fehlernummer reagieren.

    dedlfix.