O acionador PL / SQL recebe um erro de tabela mutante

Meu gatilho quer verificar se um gerente 'novo' supervisiona não mais que 5 funcionários. O gerente que supervisiona apenas 5 pessoas está na tabela BLOCKED_MANAGER (ssn, número de funcionários). Por fim, todas as atualizações são registradas na tabela SUPERLOG (data, usuário, old_manager, new_manager). Não recebo nenhum erro de compilação sobre o gatilho, mas quando atualizo um superssn, recebo este erro:

SQL> update employee set superssn='666666607' where ssn='111111100';
update employee set superssn='666666607' where ssn='111111100'
   *
ERROR at line 1:
ORA-04091: Table FRANK.EMPLOYEE is mutating, the trigger/function
can't read it
ORA-06512: a "FRANK.TLOG", line 20
ORA-04088: error during execution of trigger 'FRANK.TLOG'

Como posso resolver esse gatilho? Obrigado

create or replace trigger tlog 
before update of superssn on employee
for each row
declare
t1 exception;
n number:=0;
cont number:=0;
empl varchar2(16);
cursor cur is (select ssn from blocked_manager where ssn is not null);
begin
open cur;
    loop
fetch cur into empl;
exit when cur%notfound;
if(:new.superssn = empl) then
    n:=1;
end if;
end loop;
close cur;
if n=1 then
raise t1;
end if;
select count(*) into cont from employee group by superssn having superssn=:new.superssn;
if(cont=4) then
insert into blocked_manager values(:new.superssn,5);
end if;
insert into superlog values(sysdate,user,:old.superssn, :new.superssn );
exception
when t1 then
raise_application_error(-20003,'Manager '||:new.superssn||' has already 5 employees');
end;

questionAnswers(2)

yourAnswerToTheQuestion