Практические занятия по курсу «Разработка программных единиц pl/sql»


Практическое занятие 9. Создание триггеров


Download 287.16 Kb.
bet9/14
Sana03.06.2024
Hajmi287.16 Kb.
#1842245
TuriЗанятие
1   ...   6   7   8   9   10   11   12   13   14
Bog'liq
Блоки. Часть 2

Практическое занятие 9. Создание триггеров


  1. В таблице JOBS хранятся значения максимально и минимально допустимой зарплаты для данной должности. Необходимо создать триггер, связанный с операциями insert и update таблицы EMPLOYEES, который не позволит устанавливать некорректную зарплату для сотрудников. Для этого:

    1. Создайте процедуру CHECK_SALARY:

      1. Процедура принимает на вход 2 параметра – идентификатор должности сотрудника и величину его зарплаты.

      2. Процедура использует job id для определения максимально и минимально возможной зарплаты для этой должности (на основе данных в таблице JOBS).

      3. Если значение второго параметра не попадает в установленный для данной должности диапазон значений процедура должна генерировать исключение «Invalid salary for this job. Salaries must be between and ». Заменяйте именованные зоны соответствующими значениями.

    2. Создайте триггер CHECK_SALARY_TRG на таблицу EMPLOYEES, который срабатывает для каждой строки перед операциями insert и update.

      1. Триггер должен вызывать на исполнение процедуру CHECK_SALARY

      2. Триггер должен передавать процедуре значения job id и зарплаты.

  2. Протестируйте работу триггера.

    1. Добавьте нового сотрудника с помощью процедуры EMP_PKG.ADD_EMPLOYEE c именем Eleanor Beh и номером отдела 30. Что произойдет и почему? Какая зарплата присваивается сотруднику при добавлении?

    2. Измените зарплату сотруднику 115 на $2000. С помощью отдельной операции измените его должность на HR_REP. Что произойдет и почему?

    3. Измените зарплату 115 сотрудника на $2800. Что произойдет?

  3. Внесите изменения в триггер таким образом, чтобы он срабатывал только при фактическом изменении зарплаты или должности сотрудника. Проверять допустимость зарплаты нужно в 2 случаях – собственно при изменении зарплаты, и при изменении должности сотрудника. Почему?

    1. Добавьте в описание триггера WHEN-конструкцию, проверяющую, что значение в столбцах salary или job_id изменилось. Убедитесь, что Вы предусмотрели ситуацию, когда прежним (OLD) значением было NULL (в каком случае это происходит?).

    2. Протестируйте работу триггера с помощью процедуры EMP_PKG.ADD_EMPLOYEE и следующим набором параметров:

      1. p_first_name: Eleanor

      2. p_last_name: ‘Beh’

      3. p_Email: ‘EBEH’

      4. p_Job: ‘IT_PROG’

      5. p_sal: 5000

    3. Обновите зарплату сотрудников в должности IT_PROG - повысьте зарплату на $2000. Зафиксируйте результат.

    4. Присвойте Eleanor Beh зарплату равную $9000.

    5. Измените должность Eleanor Beh на ST_MAN. Зафиксируйте результат.

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

    1. Создайте statement триггер с именем DELETE_EMP_TRG на таблицу EMPLOYEES. Запретите удаление в период с 9-00 до 18-00. (или другой период актуальный на момент тестирования).

    2. Попробуйте удалить сотрудника в должности SA_REP, который не приписан ни к какому отделу.



Download 287.16 Kb.

Do'stlaringiz bilan baham:
1   ...   6   7   8   9   10   11   12   13   14




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling