Учебно-практическое пособие москва 2017 ббк


CREATE TEMP TABLE aircrafts_tmp AS



Pdf көрінісі
бет160/243
Дата21.07.2022
өлшемі3,05 Mb.
#147663
түріУчебно-практическое пособие
1   ...   156   157   158   159   160   161   162   163   ...   243
Байланысты:
Язык SQL. Базовый курс

CREATE TEMP TABLE aircrafts_tmp AS
SELECT * FROM aircrafts WITH NO DATA;
Наложим на таблицу необходимые ограничения: они не создаются при копировании
таблицы. При массовом вводе данных гораздо более эффективным с точки зрения
производительности было бы сначала добавить строки в таблицу, а уже потом накла-
дывать ограничения на нее. Однако в нашем случае речь о массовом вводе не идет,
поэтому мы начнем с наложения ограничений, а уже потом добавим строки с табли-
цу.
ALTER TABLE aircrafts_tmp
ADD PRIMARY KEY ( aircraft_code );
ALTER TABLE aircrafts_tmp
ADD UNIQUE ( model );
Теперь создадим вторую таблицу, копировать данные из постоянной таблицы
aircrafts в нее также не будем.
CREATE TEMP TABLE aircrafts_log AS
SELECT * FROM aircrafts WITH NO DATA;
165


Ограничения в виде первичного и уникального ключей этой таблице не требуются, но
потребуются еще два столбца: первый будет содержать дату/время выполнения опе-
рации над таблицей aircrafts_tmp, а второй — наименование этой операции (INSERT,
UPDATE или DELETE).
ALTER TABLE aircrafts_log
ADD COLUMN when_add timestamp;
ALTER TABLE aircrafts_log
ADD COLUMN operation text;
Поскольку в рассматриваемой ситуации копировать данные из постоянных таблиц во
временные не требуется, то в качестве альтернативного способа создания временных
таблиц можно было бы воспользоваться командой CREATE TEMP TABLE с предложе-
нием LIKE. Например:
CREATE TEMP TABLE aircrafts_tmp
( LIKE aircrafts INCLUDING CONSTRAINTS INCLUDING INDEXES );
Но так как уникального индекса по столбцу model в таблице aircrafts нет, то для вре-
менной таблицы его пришлось бы сформировать с помощью команды ALTER TABLE,
как и при использовании первого способа ее создания. Добавим, что предложение
LIKE можно применять для создания не только временных таблиц, но и постоян-
ных.
Поскольку у нас есть журнальная таблица aircrafts_log, мы можем все операции с таб-
лицей aircrafts_tmp записывать в таблицу aircrafts_log, т. е. вести историю изменений
данных в таблице aircrafts_tmp.
Начнем работу с того, что скопируем в таблицу aircrafts_tmp все данные из таблицы
aircrafts. Для выполнения не только «полезной» работы, но и ведения журнала изме-
нений воспользуемся


Достарыңызбен бөлісу:
1   ...   156   157   158   159   160   161   162   163   ...   243




©engime.org 2024
әкімшілігінің қараңыз

    Басты бет