пытаюсь создать временную таблицу и работать с нею. Но получаю ошибки.
Вариант первый:
— Создаю таблицу
create temp table passenger_tickets
(
like transport.tickets
) on commit drop;
select *
into passenger_tickets
from transport.tickets t
where t.passenger_id = _passenger_id
and t.needs_payment = true
and t.card_cost <> 0;
Получаю ошибку вот в этом месте: select *
into passenger_tickets
Пишет, нет такой переменной passenger_tickets.
Пытаюсь пойти другим путём. Пишу:
select *
into temp table passenger_tickets
from transport.tickets t
where t.passenger_id = _passenger_id
and t.needs_payment = true
and t.card_cost <> 0;
Получаю ошибку: нет такой переменной temp.
Если верить документации, то делаю всё правильно. Что я не учёл? Спасибо!
нууу, временная таблица - это не переменная ) в нее не надо into в нее надо insert
А как же документация?
У plpgsql свой синтаксис, который описан в документацыи отдельно. Про то, что select into table туда никак не вписывается там не написано — однако есть вот такое замечание: Note that this interpretation of SELECT with INTO is quite different from PostgreSQL's regular SELECT INTO command, wherein the INTO target is a newly created table. If you want to create a table from a SELECT result inside a PL/pgSQL function, use the syntax CREATE TABLE ... AS SELECT. https://www.postgresql.org/docs/10/plpgsql-statements.html
я имел ввиде обычный select column1, ... from table при наличии нескольких индексов, при различных запросах использующим разные индексы будет убивать ssd?
Нет. Запросы на чтение не убивают SSD.
По крайней мере до тех пор пока они помещаются в оперативке.
Обсуждают сегодня