Используя DB2 9.7.5, у меня есть две таблицы: основная таблица и таблица импорта. Каждый час я получаю дамп данных, который вставляется в таблицу импорта. Затем я объединяю записи из таблицы импорта в основную таблицу. Чтобы различать существующие записи в основной таблице, все записи имеют отметку времени с точностью до секунды.
Обе таблицы определены как таковые:
CREATE TABLE ... (
STATUS VARCHAR(1000) NOT NULL,
ACTION_DATE TIMESTAMP NOT NULL
) IN SOME_TABLE_SPACE;
Перед объединением таблицы импорта с основной таблицей я удаляю существующие записи в таблице импорта.
DELETE FROM IMPORTING
WHERE (ACTION_DATE) IN
(SELECT ACTION_DATE FROM MASTER);
Единственные записи в таблице импорта должны быть новыми, поэтому я вставляю записи из таблицы импорта в главную таблицу.
INSERT INTO MASTER (STATUS, ACTION_DATE)
SELECT STATUS, ACTION_DATE FROM IMPORTING;
Проблема, с которой я сталкиваюсь время от времени, заключается в том, что я получаю повторяющиеся записи, потому что ACTION_DATE иногда отличается до 2 секунд между мастер-таблицей и таблицей импорта.
Итак, как мне удалить записи из таблицы импорта, которые имеют смещение временной метки 2 секунды в главной таблице?
time1
, то в главной таблице должно бытьtime1
, и точка. Если на то пошло, почему ты не очищаешь весь стол? Или даже с помощью отдельной таблицы импорта, если они обе выглядят так? - person Clockwork-Muse   schedule 26.01.2018