MyTetra Share
Делитесь знаниями!
Создать временную таблицу в PostgreSQL
19.07.2018
15:04
Автор: br0ke
Текстовые метки: postgresql, postgres, postgre, sql, temp, temporary, table, temp table, on commit, transaction
Раздел: Информационные технологии - Базы данных - PostgreSQL

В PostgreSQL возможно создание временных таблиц, которые могут быть автоматически удалены, например, по завершению транзакции. Временные таблицы полностью поддерживают все возможности обычных таблиц.


Создание:


CREATE { TEMPORARY | TEMP } TABLE [ IF NOT EXISTS ] имя_таблицы ( [

{ имя_столбца тип_данных [ COLLATE правило_сортировки ] [ ограничение_столбца [ ... ] ]

| ограничение_таблицы

| LIKE исходная_таблица [ вариант_копирования ... ] }

[, ... ]

] )

[ INHERITS ( таблица_родитель [, ... ] ) ]

[ WITH ( параметр_хранения [= значение] [, ... ] ) | WITH OIDS | WITHOUT OIDS ]

[ ON COMMIT { PRESERVE ROWS | DELETE ROWS | DROP } ]

[ TABLESPACE табл_пространство ]


Пример:


-- Начинаем транзакцию

BEGIN;


-- Создаем временную таблицу на основе SQL-запроса

CREATE TEMP TABLE full_features_history ON COMMIT DROP
AS
SELECT
*
FROM
(
SELECT
id, geog, layer, username, action_type, parent_id, sys_period
FROM
features
WHERE
layer != 'pano'

UNION ALL

SELECT
id, geog, layer, username, action_type, parent_id, sys_period
FROM
features_history
WHERE
layer != 'pano'
) AS combined
ORDER BY sys_period DESC;

-- Создаем необходимые индексы на временной таблице
CREATE INDEX ON full_features_history(id);
CREATE INDEX ON full_features_history(id, username);

-- Анализируем содержимое временной таблицы
ANALYZE full_features_history;


-- Временная таблица будет удалена по завершению транзакции из-за ON COMMIT DROP

COMMIT;



Так же в этом разделе:
 
MyTetra Share v.0.52
Яндекс индекс цитирования