Триггер на том же столе в oracle - PullRequest
0 голосов
/ 22 апреля 2020

У меня есть таблица employee_leave:

  /

Мне нужно создать триггер, чтобы при удалении менеджера (is_manager = 'Y') из этой таблицы подчиненный / сотрудник менеджера вместе с менеджерами employee_id, как его employee_manager_id, должен иметь значение employee_manager_id, равное null, при удалении.

Как мне написать это и какие триггеры могли бы помочь в обновлении той же таблицы после удаления.

1 Ответ

0 голосов
/ 22 апреля 2020

Вам не нужен триггер или какой-либо код для всего этого. Создайте FK от EMPLOYEE_MANAGER_ID до EMPLOYEE_MANAGER_ID с опцией удалить заданный ноль.

    CREATE TABLE  "EMPLOYEE_LEAVE" 
       (    "EMPLOYEE_ID" NUMBER NOT NULL ENABLE, 
        "EMPLOYEE_NAME" VARCHAR2(100) NOT NULL ENABLE, 
        "EMPLOYEE_EMAIL" VARCHAR2(100) NOT NULL ENABLE, 
        "EMPLOYEE_MANAGER_ID" NUMBER, 
        "EMPLOYEE_USERNAME" VARCHAR2(400), 
        "EMPLOYEE_LEAVE_NORMAL" NUMBER NOT NULL ENABLE, 
        "EMPLOYEE_LEAVE_LOP" NUMBER, 
        "EMPLOYEE_IS_MANAGER" CHAR(1) NOT NULL ENABLE, 
        "EMPLOYEE_IS_ADMIN" CHAR(1) NOT NULL ENABLE, 
        "EMPLOYEE_CONTACT_NO" VARCHAR2(100), 
        "EMPLOYEE_PASSWORD" VARCHAR2(100), 
         CONSTRAINT "EMPLOYEE_PK" PRIMARY KEY ("EMPLOYEE_ID")
      USING INDEX  ENABLE

        , constraint empmgr_2_emp foreign key (employee_manager_id) 
          references employee_leave(employee_id) on delete set null
); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...