Конструкция RETURNING
Расширение PostgreSQL: INSERT/UPDATE/DELETE возвращает изменённые строки. INSERT INTO users (name) VALUES ('Alice') RETURNING id, created_at избавляет от отдельного SELECT за автогенерированным ID. Появилась в Postgres 8.2 (2006), в SQL:2023 стандартизирована.
Основной случай — получить автогенерированный первичный ключ после INSERT (в MySQL для этого служит LAST_INSERT_ID()). UPDATE ... RETURNING возвращает значения для аудита, DELETE ... RETURNING — удаляет и сообщает, что именно удалено. Хорошо сочетается с CTE: WITH inserted AS (INSERT ... RETURNING *) SELECT * FROM inserted JOIN .... Выигрыш — один обмен с сервером вместо INSERT и отдельного SELECT. В MariaDB RETURNING появился в 10.5 (2020), а в MySQL 8.x его по-прежнему нет (на 2024 год). ORM (SQLAlchemy, Django) при возможности используют RETURNING под капотом.