TGViewer
SQLite на практике SQLite на практике @sqliter · 2.25K subscribers
Post #36 2.49K
Добавить или обновить записи одним запросом

Участник курса спрашивает:

Есть таблица, хочу ежедневно загружать в неё обновления из csv. Если по id запись уникальная — добавлять, а если запись существует — обновлять поля, которые отличаются, кроме id. Это можно как-то из коробки?

Да! Такой подход (добавить или обновить по необходимости) в мире SQL называется «upsert». В SQLite он реализуется через инструкцию on conflict.

Допустим, мы хотим добавить/обновить записи в таблице stats. Тогда запрос будет примерно такой:

insert into stats(id, last_updated, usage)
select ... from ...
on conflict(id) do update
set
last_updated = excluded.last_updated,
usage = usage + excluded.usage;


excluded — это та запись, которую мы пытаемся вставить (и она вызвала конфликт по id).

Что особенно приятно, такой же синтаксис сработает и в PostgreSQL (SQLite позаимствовал фичу у него).

P.S. Присоединяйтесь к чату «SQL на практике»! https://t.me/sqliter_chat
  • 👍 2
More from @sqliter
  1. May 20, 2025fuzzy: Нечеткое сравнение строк в SQLite Расширение nalgeon/fuzzy помогает сравнивать стро…
  2. May 14, 2025fileio: Работа с файлами в SQLite Расширение nalgeon/fileio добавляет в SQLite возможность…
  3. May 10, 2025define: Пользовательские функции в SQLite Как известно, в SQLite нет хранимых процедур. Пр…
  4. May 7, 2025crypto: Хеши, кодирование и декодирование в SQLite Открываю новую серию заметок. В каждом…
  5. Aug 8, 2024Работа с датой и временем в SQLite В sqlite есть встроенные функции для работы с датами, н…
  6. May 8, 2024Современный SQLite: Вычисляемые столбцы Вычисляемые (generated) столбцы рассчитываются на…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →