Есть ли способ ограничить «ON DUPLICAYE KEY UPDATE», чтобы запускать только в том случае, если дубликат ключа является ПЕРВИЧНЫМ КЛЮЧОМ таблицы? (а не если конфликт генерируется УНИКАЛЬНЫМ КЛЮЧОМ)
Например, в следующей таблице:
CREATE TABLE users (
id INT(16) UNSIGNED AUTO_INCREMENT,
username VARCHAR(255) NOT NULL UNIQUE,
PRIMARY KEY (id),
UNIQUE (username)
);
Я хотел бы запустить обновление, только если столбец id
создает конфликт, и выдает ошибку как обычно, если конфликт произошел из-за уникального ключа username
.
Редактировать :
Я работаю над очень простой структурой PHP. Ранее у меня был один метод save()
, который различал INSERT
и UPDATE
на основании наличия свойства id
объекта, для которого он был вызван.
Теперь я переписал этот метод, используя запрос INSERT INTO ... ON DUPLICATE KEY UPDATE
, но когда я пытаюсь вставить (например) пользователя с уже существующим значением username
, он обновляет этого пользователя, а не выдает ошибку.
Я знаю, что это правильное поведение, я просто хотел узнать, есть ли способ достичь того же результата только на ПЕРВИЧНОМ КЛЮЧЕ.