Это похоже на хороший вариант использования для синтаксиса MySQL INSERT ... ON DUPLICATE KEY UPDATE
.
Прежде всего, вы хотите создать ограничение UNIQUE
для столбца email
. Это правильный способ представить ваше бизнес-правило:
ALTER TABLE users ADD CONSTRAINT users_unique_email UNIQUE (email);
Теперь, если запись, которая собирается быть вставленной, сгенерирует дубликат на первичном ключе или на этом ограничении UNIQUE
, тогда MySQL позволяет вместо этого превратить операцию в UPDATE
.
В вашем случае, поскольку вы не хотите ничего обновлять в этом случае, вы можете просто переназначить столбец email
(который, как мы знаем, здесь тот же).
Рассмотрим:
INSERT INTO users
VALUES (null,'email9','password9','forename9','lastname9')
ON DUPLICATE KEY UPDATE SET email = 'mail9';