Я читал о том, как использовать вставку MySQL для дублирования, чтобы проверить, не позволит ли я избежать выбора. Выбираем строку, проверяя ее существует, а затем либо вставка, либо обновление. Однако, прочитав документацию, меня разделяет одна область. Это то, что документация говорит:MySQL «Вставить ... на дубликат ключа» с несколькими уникальными ключами
Если вы указываете ON DUPLICATE KEY UPDATE, и вставляется строка, которая будет вызывать повторяющееся значение в уникальный индекс или первичный ключ, обновление старой строки выполняется
Дело в том, что я не хочу знать, будет ли это работать для моей проблемы, потому что «условие», которое я для не вставки нового, - это наличие строки, которая имеет два столбца, равные определенному значение, не обязательно, что первичный ключ тот же. Сейчас синтаксис я себе это, но я не знаю, если он всегда будет вставить вместо замены:
INSERT INTO attendance (event_id, user_id, status) VALUES(some_event_number, some_user_id, some_status) ON DUPLICATE KEY UPDATE status=1
Дело в том, event_id и user_id не являются первичными ключами, но если ряд в таблице «посещаемость» уже есть те столбцы с этими значениями, я просто хочу ее обновить. В противном случае я хотел бы вставить его. Возможно ли это с помощью ON DUPLICATE? Если нет, какой другой метод я могу использовать?
Что такое «первичный ключ (event_id, user_id)»? Создает ли он первичный ключ? – phouse512
Он делает пару event_id и user_id вашим основным ключом. Поэтому, если вы вставляете один и тот же event_id AND user_id, он будет обновляться, иначе он будет вставляться. ТОЛЬКО, если они совпадают, а не только event_id или просто user_id. Я добавил SQLFiddle, чтобы вы могли проверить это. – Tricky12
, поэтому он не добавляет лишний физический столбец? – phouse512