create table dummy ( id int auto_increment, name varchar(255) not null, bla varchar(255) not null, primary key (id), unique key(name)) ENGINE=InnoDB;insert into dummy ( id, name, bla ) values ( NULL, "foo", "--" ) on duplicate key update bla = if (VALUES(bla) = "--", bla, VALUES(bla));-- new row. correctly returns the new id (1)select last_insert_id();insert into dummy ( id, name, bla ) values ( NULL, "foo", "--" ) on duplicate key update bla = if (VALUES(bla) = "--", bla, VALUES(bla));-- no update. correctly returns 0select last_insert_id();insert into dummy ( id, name, bla ) values ( NULL, "foo", "XX" ) on duplicate key update bla = if (VALUES(bla) = "--", bla, VALUES(bla));-- row updated. THIS RETURNS 2! WTF??select last_insert_id();insert into dummy ( id, name, bla ) values ( NULL, "foo", "XX" ) on duplicate key update bla = if (values(bla) = "--", bla, VALUES(bla));-- no update. correctly returns 0select last_insert_id();