Загрузить исторические данные во временную таблицу teradata
У меня есть задача загрузить существующую таблицу SQL Server во временную таблицу Teradata. Существующая таблица является таблицей типа 2 и имеет много версий записи. Мне нужно загрузить их в темпоральную временную таблицу. Я планирую загрузить первую версию 1, а затем обновлять все остальные версии одну за другой. Трудности, которые у меня возникают, состоят в том, что в существующей таблице каждая запись имеет время начала и время окончания. Мне нужно обновить это время в темпоральной таблице teradata как срок действия.
1-й Я пытаюсь вставить, и пока я не могу вставить время окончания меньше текущего времени. Он сообщает об ошибке как "Проверить нарушение ограничения". Ниже приведен пример кода для создания таблицы и вставки.
Я пока не тестировал обновления, так как не смог сделать 1-й шаг.
CREATE multiset TABLE EDW_T.edw_Contracts_History_Test
(
ID INTEGER,
Validity PERIOD(TIMESTAMP(3)) NOT NULL AS VALIDTIME
);
insert into EDW_T.edw_Contracts_History_Test(id,Validity) values(
1,period(cast('1996-01-20 05.00.00.000' as TIMESTAMP(3)), cast('2016-06-23 21.52.20.000' as TIMESTAMP(3))))
--this pass as 2016 is greater than current date
insert into EDW_T.edw_Contracts_History_Test(id,Validity) values(
1,period(cast('1996-01-20 05.00.00.000' as TIMESTAMP(3)), cast('2015-06-23 21.52.20.000' as TIMESTAMP(3))))
--This fails as i m trying to give end time less than current date.
Есть ли в любом случае, чтобы дать время окончания меньше текущей даты. любой способ отключить это ограничение на время, а затем включить.
Пожалуйста помоги. Спасибо!
1 ответ
Чтобы вставить строки истории, вы должны использовать Sequnce Valid Time Modifier...
Например:
SEQUENCED VALIDTIME
insert into EDW_T.edw_Contracts_History_Test(id,Validity) values(
1,period(cast('1996-01-20 05.00.00.000' as TIMESTAMP(3)), cast('2015-06-23 21.52.20.000' as TIMESTAMP(3))));