PostgreSQL
  • Introduction
  • PostgreSQL
    • Введение
    • Установка и базовые операции
    • Запуск команд SQL из файла
    • Агрегатные функции
    • Реляционная алгебра
    • Создание счётчика
    • Изменение структуры таблицы
    • Диапазоны и множества
    • Регулярные выражения
    • Скрипты SQL
    • Группировка
    • Регистры строк
    • Уникальные поля
    • Сортировки и вычисляемые поля
    • Представления
    • Массивы и триггеры
    • Индексы и анализ
    • Текстовый анализ
    • Использование RETURNING
    • Возврат массива записей
    • Внешние ключи
    • Ускорение БД
    • Запросы WITH
    • JSON
Powered by GitBook
On this page

Was this helpful?

  1. PostgreSQL

Использование RETURNING

Создадим таблицу для хранения информации о людях.

CREATE TABLE people
(
  user_id BIGSERIAL PRIMARY KEY,
  user_name TEXT,
  user_age INTEGER
);

Заполним таблицу записями.

После каждого добавления записи система будет возвращать информацию о добавленной записи.

Это поможет узнать после добавления user_id добавленной записи, который генерируется системой.

INSERT INTO people (user_name, user_age) VALUES ('Maxim', 25) 
RETURNING user_id AS u1, user_name AS u2, user_age AS u3;

INSERT INTO people (user_name, user_age) VALUES ('Nina', 30) 
RETURNING user_id AS u1, user_name AS u2, user_age AS u3;

INSERT INTO people (user_name, user_age) VALUES ('George', 17) 
RETURNING user_id AS u1, user_name AS u2, user_age AS u3;

Получаем содержимое таблицы.

SELECT * FROM people ORDER BY user_id ASC;

Заменим содержимое одной записи и вернём содержимое записи после изменения (обновлённое содержимое).

UPDATE people SET user_name = 'Anatoluy' WHERE user_id = 2 
RETURNING user_id AS u1, user_name AS u2, user_age AS u3;

Снова выведем на экран содержимое таблицы.

SELECT * FROM people ORDER BY user_id ASC;

Возврат результата запроса с помощью хранимой процедуры

Создадим хранимую процедуру, которая будет возвращать содержимое таблицы people.

Записи при возврате будут отсортированы по убыванию поля user_id.

CREATE OR REPLACE FUNCTION get_all_people_desc ( )
   RETURNS TABLE 
   (
      user_id BIGINT,
      user_name TEXT,
      user_age INTEGER
   ) 
   AS $mytable$
BEGIN
   RETURN QUERY 
   SELECT * FROM people ORDER BY user_id DESC;
END

$mytable$ LANGUAGE plpgsql;

Вызываем данную хранимую процедуру.

SELECT * FROM get_all_people_desc();
PreviousТекстовый анализNextВозврат массива записей

Last updated 5 years ago

Was this helpful?