Авторский канал про Базы Данных и SQL
Ресурсы, гайды, задачи, шпаргалки.
Информация ежедневно пополняется!
Cотрудничество: @energy_c
РКН: https://clck.ru/3QREBc
Post #1152
4.29K
UPSERT: вставляем или обновляем запись!
Нередко требуется добавить данные без риска дубликата. Реализуем
Задаём таблицу:
Пробная вставка:
Результат:
🔥 Такой приём избавляет от дубликатов и делает вставку надёжной.
➡️ SQL Ready | #практика
Нередко требуется добавить данные без риска дубликата. Реализуем
UPSERT — вставка при отсутствии и обновление при конфликте.Задаём таблицу:
CREATE TABLE users (
id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
email TEXT UNIQUE NOT NULL,
login_count INT NOT NULL DEFAULT 0
);
Пробная вставка:
INSERT INTO users (email, login_count)
VALUES ('alice@mail.com', 1);
UPSERT при конфликте (увеличиваем счётчик и сразу возвращаем результат):INSERT INTO users AS u (email, login_count)
VALUES ('alice@mail.com', 1)
ON CONFLICT (email) DO UPDATE
SET login_count = u.login_count + EXCLUDED.login_count
RETURNING email, login_count;
Результат:
email | login_count
----------------+------------
alice@mail.com | 2
🔥 Такой приём избавляет от дубликатов и делает вставку надёжной.
➡️ SQL Ready | #практика
- 👍 16
- ❤ 11
- 🔥 5
- 🤝 1




















