В дополнение к синтаксису INSERT..ON DUPLICATE KEY UPDATE
, который упоминали другие, иногда целесообразно использовать REPLACE
.Это в основном УДАЛЕНИЕ строки, за которым следует ВСТАВКА новых значений.
Это имеет некоторые побочные эффекты, такие как запуск триггера удаления и вставки.На него также распространяются ограничения ссылочной целостности, поэтому, если есть какие-либо дочерние строки, ссылающиеся на заменяемую строку, либо REPLACE завершится ошибкой, либо удаление будет каскадным, а также удалит дочернюю строку.
Тамеще бывают времена, когда ЗАМЕНА удобна, но помните об этих проблемах.