Doktor Knallcharge: MySQL-Fehler 1062, Doppler-ID finden

Beitrag lesen

ich benötige die ID/key (autoincrementwert) einer Tabelle, wenn doppelt vorhanden.

id|wert
1|a
2|b
3|c
4|d

Die wert-spalte ist unique, was natürlich im Konfliktfall somit keine id liefert, da nicht eingetragen. Dieser Fehler lässt sich ja noch abfangen mit: if(mysql_errno() == 1062))...

Doch damit erhalte ich immer noch nicht die betreffende id.

Somit meine Frage: Komme ich an die ID des Dopplers

mysql> insert into tabelle (wert) values ("a") on duplicate key update id=last_insert_id(id);

mysql> select last_insert_id(), row_count();
+------------------+-------------+
| last_insert_id() | row_count() |
+------------------+-------------+
|                1 |          -1 |
+------------------+-------------+

mysql> insert into tabelle (wert) values ("x") on duplicate key update id=last_insert_id(id);

mysql> select last_insert_id(), row_count();
+------------------+-------------+
| last_insert_id() | row_count() |
+------------------+-------------+
|                5 |           1 |
+------------------+-------------+