Подтвердить что ты не робот

MySQL вставлять в дубликат ключа; Удалить?

Есть ли способ удалить запись в дубликат ключа в MySQL?

Скажем, у нас есть запись в базе данных с конкретным первичным ключом, и мы пытаемся добавить еще один с тем же ключом. ON DUPLICATE KEY UPDATE просто обновит запись, но есть ли возможность удалить запись, если она уже существует? Он предназначен для простых функций ввода/вывода одним нажатием кнопки.

4b9b3361

Ответ 1

Это обход, но он работает:

Создайте новый столбец и назовите его do_delete или что-то еще, сделав его крошечным-int. Тогда do On Duplicate Key Update do_delete = 1;

В зависимости от вашей версии MySQL/соединения вы можете выполнять несколько запросов в одном и том же выражении. Однако, если нет, просто запустите отдельный запрос сразу же послесловия. В любом случае следующий запрос будет выглядеть следующим образом: Delete From [table] Where do_delete = 1;. Таким образом, если это новая запись, она ничего не удалит. Если это не новая запись, она затем помечает ее для удаления, после чего вы можете ее удалить.

Ответ 2

Используйте ЗАМЕНИТЬ ВПЕРЕД:

replace into some_table
select somecolumn from othertable

будет либо вставлять новые данные, либо если те же самые данные будут удалены, и вставьте новый

Ответ 4

Да, конечно, в MySQL есть решения для вашей проблемы.

Если вы хотите удалить или пропустить новую запись вставки, если в ключевом столбце таблицы существует дублирующаяся запись, вы можете использовать IGNORE следующим образом:

insert ignore into mytbl(id,name) values(6,'ron'),(7,'son');

Здесь id - первичный ключ в таблице mytbl. Это добавит несколько значений в таблицу, удалив или пропустив новые повторяющиеся записи.

Надеюсь, это выполнит ваше требование.