Rolf B: mysql Insert Row if not exists

Beitrag lesen

Hallo Jörg,

dafür gibt es meines Wissens keine Zusatzklausel. Und INSERT WHERE gibt's eh nicht.

Deine Abfrage ist aber nicht logisch. Du fügst Bla=1 und Blu=0 ein, aber im WHERE fragst Du Bla=1 und Blu=1 ab. Ist das das, was Du willst? Oder ein Tippfehler?

Wenn Du sicherstellen willst, dass die gleiche Kombination von BLA und BLU Werten nicht doppelt in der DB vorkommt, könntest Du einen UNIQUE INDEX über BLA und BLU anlegen. Das schlägt zwei Klappen mit einer Fliege: Die Kollisionsprüfung muss keinen Table Scan machen, und das Einfügen einer existierenden BLA/BLU Kombination wird verhindert, ohne dass Du es abfragen musst. Statt dessen sollte Fehlercode 1062 (Duplicate Key) kommen.

Dass Du Die ID auf NULL setzt, ok, da hab ich mal wieder was gelernt. Nach meiner Kenntnis muss man AUTO INCREMENT Spalten beim INSERT weglassen, wenn man den Auto-Inkrement haben will. Aber es ist schon OK, MYSQL unterstützt das so (solange ID eine NOT NULL Spalte ist).

Rolf

--
sumpsi - posui - obstruxi