Встречается на собеседованиях • сегодня

Какие знаешь недостатки оператора UPSERT

UPSERT (UPDATE or INSERT) оператор, реализуемый через INSERT ... ON CONFLICT в PostgreSQL или REPLACE/INSERT ... ON DUPLICATE KEY UPDATE в MySQL, имеет несколько недостатков:

  1. Производительность – при частых конфликтах может быть менее эффективен, чем отдельные INSERT/UPDATE, из-за дополнительных проверок на конфликт.
  1. Ограниченная гибкость – условия конфликта обычно ограничены первичными или уникальными ключами, сложные условия требуют обходных путей.

  2. Побочные эффекты – в MySQL REPLACE фактически удаляет и вставляет строку, что может вызвать каскадные удаления или триггеры.

Пример PostgreSQL:

sql
-- Если email существует, обновит name, иначе вставит новую запись
INSERT INTO users (email, name) 
VALUES ('test@example.com', 'Alice')
ON CONFLICT (email) 
DO UPDATE SET name = EXCLUDED.name;

В SQLite аналогичный синтаксис, но в других СУБД могут быть нюансы реализации.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы