Использование RETURNING в SQL: присвоение id переменной
Пройдите тест, узнайте какой профессии подходите
Быстрый ответ
Для того чтобы присвоить результат операций INSERT или UPDATE переменной, используйте RETURNING в паре с CTE (Common Table Expression) в PostgreSQL. Приведенный ниже пример иллюстрирует это:
WITH insert_return AS (
INSERT INTO example_table (column_name) VALUES ('awesome_data')
RETURNING id
)
SELECT id INTO local_var FROM insert_return;
В этом случае id
, полученный при вставке в example_table
, прямо присваивается переменной local_var
.
Советы для укрепления вашего SQL-арсенала
1. Усиливаем переменные путем определения типов данных
Явное указание типов данных для переменных позволяет предотвратить ошибки в SQL-запросах и гарантировать надежное хранение данных. В PostgreSQL доступны удобные атрибуты %TYPE
и %ROWTYPE
, которые автоматически копируют тип данных из структуры таблицы.
DECLARE
my_variable example_table.column_name%TYPE;
2. Структурируем SQL как хорошо спланированное путешествие
Не начинайте выполнение кода без предварительного объявления переменных и ясного определения структуры таблиц. Это поможет избежать ошибок в обработке данных.
3. Учитываем платформу
Разные СУБД работают синтаксисом RETURNING
по-своему. Прежде чем применять эту конструкцию, убедитесь, что она поддерживается вашей системой управления базами данных.
SQL, новый уровень: Продвинутое использование и бескомпромиссная обработка ошибок
Обертываем операции в блок DO
Если вы работаете вне функции или процедуры, используйте блок DO
для создания контекста выполнения ваших SQL-команд.
DO $$
DECLARE
local_var INT;
BEGIN
WITH insert_and_return AS (
INSERT INTO my_table (data)
VALUES ('Important') RETURNING id
)
SELECT id INTO local_var FROM insert_and_return;
END $$;
Тонкости синтаксиса: Секретный язык SQL
Стандартный формат записи при присвоении значений переменным выглядит следующим образом:
INSERT INTO table_name (column_name)
VALUES ('insert_value')
RETURNING other_column INTO local_var;
Правильное использование этой формы записи поможет избегать ошибок исполнения.
Визуализация
Понимание работы RETURNING упрощается благодаря примерам. Рассмотрим SQL-транзакцию:
UPDATE bank_accounts SET balance = balance – 100 WHERE account_id = 42 RETURNING balance INTO :new_balance;
Визуализация этого процесса:
До: 💰 [Баланс: $500]
Действие: 💸 Снятие $100
После: 💰 [Баланс: $400]
RETURNING позволяет мгновенно получать обновленное значение баланса.
Визуальная отладка: Прорисовываем невидимые детали
Визуализация потоков данных в SQL-операциях облегчает отладку и помогает лучше понимать логику запроса.
Обработка ошибок: Превращаем точки боль в возможности для обучения
Следите за соответствием типов данных и правильной обработкой null
-значений, чтобы избежать распространенных ошибок.
Опыт приобретается практикой, как говорят
Для освоения различных сценариев использования RETURNING, активно используйте эту конструкцию на практике.
Полезные материалы
- PostgreSQL: Документация: 6.4. Возвращение данных из модифицированных строк — официальное описание функционала RETURNING.
- Примеры использования RETURNING – вики PostgreSQL — примеры использования на странице вики PostgreSQL.
- Демонстрационное видео использования RETURNING в PostgreSQL — визуальное объяснение работы конструкции RETURNING.