#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. Большое спасибо, это полезно