SQLLab

Глава 12 из 28

12. UPSERT, MERGE, RETURNING

«Если строка есть, обновить, иначе вставить» кажется простой задачей, пока два запроса не придут одновременно. Проверка через SELECT и последующий INSERT ломается на гонке, а счётчик, прочитанный в приложении, теряет приращения. В главе разобрано, как INSERT ... ON CONFLICT решает это одним оператором, чем он отличается от MERGE, как вернуть из записи нужные значения через RETURNING, почему ON CONFLICT сжигает значения идентификаторов и откуда берётся ошибка «cannot affect row a second time».

Продолжение доступно после покупки гайда или с подпиской Pro.

Откройте остальные главы

Ещё 20 глав: внутреннее устройство, оптимизация, администрирование. Покупка разовая, доступ навсегда.