Teradata Trigger или проверка ограничения, чтобы проверить диапазон дат из другой таблицы - PullRequest
0 голосов
/ 23 сентября 2019

Я ищу решение для реализации следующей логики в терадате.Буду очень признателен за предложения.

Прежде чем вставлять строку в таблицу_1, я хочу проверить значение даты, оно должно быть между диапазоном дат --ffective_dt и expiration_dt в таблице_2.

Таблица_1 (таблица фактов):

Account_num  Tran_dt     Tran_amt

12345        2019-05-12  120,000

Таблица_2 (таблица затемнения):

Account_num  effective_dt  expiration_dt

12345        2018-01-01     2019-04-28

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

Спасибо!

1 Ответ

0 голосов
/ 24 сентября 2019

Посмотрите, выполняет ли это то, о чем вы просите:

REPLACE TRIGGER database_name.trigger_name
 AFTER INSERT ON database_name.fct
 REFERENCING NEW TABLE AS n
 FOR EACH STATEMENT
 (ABORT 'Invalid transaction date for Account'
 FROM  n
 WHERE NOT EXISTS (SELECT 1 FROM database_name.dim d
   WHERE n.Account_num = d.Account_num
   AND n.Tran_dt between d.effective_dt and d.expiration_dt);
   );

Хотя это триггер «ПОСЛЕ ВСТАВКИ» с точки зрения того, когда он срабатывает, он все равно будет применен до INSERT может быть совершено.

...