Как написать триггерный запрос базы данных oracle, гарантирующий выполнение условия продолжительностью более 5 дней

#oracle #triggers

Вопрос:

Всем доброго дня

Пожалуйста, у меня есть триггерный запрос oracle, который я не могу понять, как это сделать.

Они запускают вот так:

Напишите триггерный запрос, гарантирующий, что отпуск продолжительностью менее семи дней не может быть разрешен

Спасибо за ваш ответ

Комментарии:

1. Если вы ожидаете полного ответа, вам нужно будет опубликовать полный вопрос, что в данном случае означает публикацию структуры таблицы и некоторых примеров данных, демонстрирующих условия прохождения и сбоя.

Ответ №1:

Это зависит от таблицы, то есть от того, как вы храните эту информацию. Если это всего лишь однострочные данные, например

 ID Name Type Duration (days) --- ------- ------- --------------- 100 Charlyo Holiday 8  

тогда ты бы

 create or replace trigger trg_biu_test  before insert or update on table_name  for each row begin  if :new.type = 'Holiday' and :new.duration lt; 7 then  raise_application_error (-20000, 'Holiday can not be shorter than 7 days');  end if; end; /  

Комментарии:

1. Я сомневаюсь, что это базовая структура таблицы, но если это так, то ситуация, в которой ограничение ПРОВЕРКИ было бы уместным, а не триггером.

2. Для меня, @APC, это похоже на чье-то (домашнее задание?) задание, а не на проблему в реальной жизни. Но, возможно, я ошибаюсь.

3. Почти наверняка это домашнее задание. К сожалению, учителя очень плохо умеют соизволивать выполнять упражнения с хорошими вариантами использования триггеров (раньше таких случаев было так мало). Тем больше причин для нас указать, что это плохое использование триггера 🙂

4. Большое спасибо, это полезно