Ограничения в виде первичного и уникального ключей этой таблице не требуются, но
потребуются еще два столбца: первый будет содержать дату/время выполнения опе-
рации над таблицей 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. Для выполнения не только «полезной» работы, но и ведения журнала изме-
нений воспользуемся
Достарыңызбен бөлісу: