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

Что такое оператор UPSERT

UPSERT — это комбинация операторов INSERT и UPDATE, позволяющая обновлять существующую запись или вставлять новую, если она отсутствует. В SQL это реализуется через ON CONFLICT (PostgreSQL) или INSERT ... ON DUPLICATE KEY UPDATE (MySQL).

Пример в PostgreSQL:

sql
INSERT INTO users (id, name, email) 
VALUES (1, 'Alice', 'alice@example.com')
ON CONFLICT (id) 
DO UPDATE SET name = EXCLUDED.name, email = EXCLUDED.email;

Пример в Python с SQLite:

python
import sqlite3

conn = sqlite3.connect('test.db')
cursor = conn.cursor()

# Создаем таблицу с уникальным полем
cursor.execute('CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY, name TEXT, email TEXT)')

# UPSERT (SQLite использует синтаксис ON CONFLICT)
cursor.execute('''
    INSERT INTO users (id, name, email) 
    VALUES (1, 'Bob', 'bob@example.com')
    ON CONFLICT(id) DO UPDATE SET name=excluded.name, email=excluded.email
''')
conn.commit()

Это удобно для атомарного обновления данных без предварительных проверок.

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

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

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

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