Я хочу проверить время, которое вводится, чтобы узнать, не прошло ли оно 2 часа с момента сохранения каких-либо других встреч.
Моя таблица тестовая (идентификатор, номер и дата теста, метка времени)
У меня есть триггер, который проверяет, находится ли новое время в течение 2 часов после указанного мной времени
create or replace trigger "TEST_T1"
BEFORE
insert on "TEST"
for each row
when (new.testdate is not null)
begin
if (:new.testdate BETWEEN (to_timestamp('12-AUG-12 02:00:00PM') - interval '120' minute)
AND (to_timestamp('12-AUG-12 02:00:00PM') + interval '120' minute))
then raise_application_error(-20634, 'This time clashes with another event.');
end if;
end;
Можно ли заменить указанное мной время временем из базы данных?
С помощью Михаила Повага - ниже - мне удалось заставить это работать, используя
create or replace trigger "TEST_T1"
BEFORE
insert on "TEST"
for each row
when (new.testdate is not null)
begin
DECLARE l_exists INTEGER;
BEGIN
SELECT COUNT(*) INTO l_exists FROM test WHERE testdate BETWEEN :new.testdate - interval '120' minute AND :new.testdate + interval '120' minute AND ROWNUM = 1;
IF l_exists = 1 THEN raise_application_error(-20634, 'This time clashes with another event.');
END IF;
END;
END;