Oracle Создать временную таблицу

Oracle Sozdat Vremennuu Tablicu



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

В Oracle глобальная временная таблица — это таблица особого типа, созданная с помощью оператора «создать глобальную временную таблицу». Этот оператор похож на обычный оператор «создать таблицу», но включает ключевое слово «глобальный временный», чтобы указать, что таблица является глобальной временной таблицей.







Синтаксис оператора «CREATE GLOBAL TEMPORARY TABLE» следующий:



СОЗДАТЬ ГЛОБАЛЬНУЮ ВРЕМЕННУЮ ТАБЛИЦУ имя_таблицы (
тип данных column1 [NULL | НЕ НОЛЬ],
тип данных column2 [NULL | НЕ НОЛЬ],
...
) [ПО СОВЕРШЕНИЮ {УДАЛИТЬ | СОХРАНИТЬ} СТРОКИ];

В этом синтаксисе имя_таблицы — это имя глобальной временной таблицы, которую вы хотите создать. столбец1, столбец2 и т. д. — это имена и типы данных столбцов в таблице.



Предложение ON COMMIT указывает, будут ли строки в таблице удалены или сохранены при фиксации текущей транзакции. Механизм базы данных будет использовать параметр ON COMMIT DELETE ROWS, если предложение ON COMMIT не определено.





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

Пример создания глобальной временной таблицы

Давайте рассмотрим несколько практических примеров использования оператора создания временной таблицы в базах данных Oracle.



Рассмотрим пример запроса, показанный ниже:

СОЗДАТЬ ГЛОБАЛЬНУЮ ВРЕМЕННУЮ ТАБЛИЦУ temp_sales (
product_id ЧИСЛО (10) НЕ НУЛЕВОЕ,
sale_date ДАТА НЕ НУЛЕВАЯ,
sale_amount NUMBER(10,2) NOT NULL
) ON COMMIT DELETE ROWS;

В приведенном выше примере мы создаем временную таблицу, используя параметр ON COMMIT DELETE ROWS.

Затем мы можем вставить некоторые образцы данных как:

ВСТАВЬТЕ В TEMP_SALES (product_id, sale_date, sale_amount) ЗНАЧЕНИЯ (1, ДАТА '2022-10-01', 100);
INSERT INTO TEMP_SALES (product_id, sale_date, sale_amount) VALUES (2, DATE '2022-10-02', 500);
INSERT INTO TEMP_SALES (product_id, sale_date, sale_amount) VALUES (3, DATE '2022-10-03', 130);

После этого вы можете зафиксировать транзакцию как:

СОВЕРШИТЬ;

После фиксации механизм базы данных усекает все данные во временной таблице, как указано в предложении фиксации.

Пример 2

В следующем примере показано, как создать таблицу, сохраняющую строки при фиксации:

СОЗДАТЬ ГЛОБАЛЬНУЮ ВРЕМЕННУЮ ТАБЛИЦУ temp_sales (
product_id ЧИСЛО (10) НЕ НУЛЕВОЕ,
sale_date ДАТА НЕ НУЛЕВАЯ,
sale_amount NUMBER(10,2) NOT NULL
) ON COMMIT PRESERVE ROWS ;

Затем мы можем добавить образцы строк и зафиксировать, как показано ниже:

ВСТАВЬТЕ В TEMP_SALES (product_id, sale_date, sale_amount) ЗНАЧЕНИЯ (1, ДАТА '2022-10-01', 100);
INSERT INTO TEMP_SALES (product_id, sale_date, sale_amount) VALUES (2, DATE '2022-10-02', 500);
INSERT INTO TEMP_SALES (product_id, sale_date, sale_amount) VALUES (3, DATE '2022-10-03', 130);

СОВЕРШИТЬ;

В этом случае данные должны быть сохранены после операции фиксации, как показано ниже в операторе select:

ВЫБЕРИТЕ * ОТ TEMP_SALES;

Вывод:

Заключение

Оператор «создать временную таблицу» — это мощный инструмент для создания временных таблиц в Oracle. Временные таблицы полезны для хранения временных данных, необходимых только для транзакции или сеанса. Оператор «создать временную таблицу» позволяет определить структуру и столбцы временной таблицы, а также указать, как будут обрабатываться строки при фиксации транзакции. В результате использование временных таблиц может повысить производительность и эффективность ваших запросов и приложений, а также уменьшить объем постоянного пространства для хранения, необходимого в вашей базе данных.