Создаете функцию для триггера:
CREATE OR REPLACE FUNCTION set_employee_status()
RETURNS TRIGGER
LANGUAGE PLPGSQL
AS
$$
DECLARE curr_row RECORD;
BEGIN
IF tg_op = 'INSERT' OR tg_op = 'UPDATE' THEN -- проверяем допустимые операции
IF NEW is null THEN -- выбираем NEW/OLD строку
curr_row := OLD;
ELSE
curr_row := NEW;
END IF;
IF curr_row.date_start <= CURRENT_DATE and curr_row.date_end >= CURRENT_DATE THEN
update employee -- тут изменяется таблица работников!
set empoyee_status = 1
where emp_id = curr_row.employee_id;
ELSE
update employee -- тут изменяется таблица работников!
set empoyee_status = 0
where emp_id = curr_row.employee_id;
END IF;
END IF;
RETURN NEW;
END;
$$
Потом нужно присоединить функцию к триггеру:
CREATE TRIGGER tr_set_employee_status
BEFORE UPDATE
ON vocation -- тут на таблицу отпусков вешается триггер!
FOR EACH ROW
EXECUTE PROCEDURE set_employee_status();
PS: Если функция будет вешаться на разные события (в особенности, на delete), то нужно выбирать NEW/OLD источник записи для определения статуса.