Триггер для ввода новой записи - PullRequest
0 голосов
/ 24 октября 2018

У меня есть sql для вставки записей в таблицу уведомлений за 60 дней до истечения срока контракта с сотрудником.

         INSERT INTO notification (name)
    SELECT employee.employee_name
    from EMPLOYEE, employee_info 
    where EMPLOYEE_INFO.EMPLOYEE_NAME(+) =EMPLOYEE.EMPLOYEE_NAME             

AND (LEAVE_TYPE ='Vacation'
             or LEAVE_TYPE = 'Personal')
     group by  EMPLOYEE.EMPLOYEE_NAME, EMPLOYEE.CONTRACT_END_PERIOD, EMPLOYEE.TOTAL_VACATION_LEAVE, EMPLOYEE_INFO.LEAVE_TYPE
      HAVING sum(days_taken) > 0
     and TO_DATE(contract_end_period,'DD-MM-YYYY') < TO_DATE (SYSDATE,'DD-MM-YYYY') + 60
); 

Однако, когда истекает срок действия контрактов с новым сотрудником, я хочу, чтобы только эта новая запись была вставлена ​​в таблицу уведомлений.

В настоящее время я получаю вставку старой и новой записи (потому что я использую загрузку страницы sql), и это вызывает дубликаты в таблице.

1 Ответ

0 голосов
/ 24 октября 2018
INSERT INTO notification (name)
    SELECT employee.employee_name
    from EMPLOYEE, employee_info 
    where EMPLOYEE_INFO.EMPLOYEE_NAME(+) =EMPLOYEE.EMPLOYEE_NAME             
    AND (LEAVE_TYPE ='Vacation' or LEAVE_TYPE = 'Personal')
 -> AND employee.employee_name NOT IN (select notification.name from notification) <-
     group by  EMPLOYEE.EMPLOYEE_NAME, EMPLOYEE.CONTRACT_END_PERIOD, EMPLOYEE.TOTAL_VACATION_LEAVE, EMPLOYEE_INFO.LEAVE_TYPE
      HAVING sum(days_taken) > 0
     and TO_DATE(contract_end_period,'DD-MM-YYYY') < TO_DATE (SYSDATE,'DD-MM-YYYY') + 60
); 

Вам нужно ограничить свой запрос людьми, которых еще нет в этой таблице.Выше приведен пример: "-> AND employee.employee_name NOT IN (выберите Notification.name из уведомления) <-" </strong> маркер.

...