Erro simples com triggers

Gente, eu tô tentando disparar um trigger… porém dá erro, fando o seguinte

"TRIGGER userIntoCommunity compilado
Warning: execução concluída com advertência
19/4 PLS-00103: Encontrado o símbolo “;” quando um dos seguintes símbolos era esperado:

if
"

O meu trigger tah assim:


CREATE OR REPLACE TRIGGER userIntoCommunity
AFTER
INSERT 
ON funcionario
FOR EACH ROW
BEGIN

IF(:new.id_empresa_fk = 1) THEN 
INSERT
INTO comunidade_has_funcionario(id_comunidade_fk, id_usuario_fk)
VALUES(4, :new.id_usuario_pk);

IF(:new.id_empresa_fk = 2) THEN 
INSERT
INTO comunidade_has_funcionario(id_comunidade_fk, id_usuario_fk)
VALUES(5, :new.id_usuario_pk);

ELSE
INSERT
INTO comunidade_has_funcionario(id_comunidade_fk, id_usuario_fk)
VALUES(6, :new.id_usuario_pk);

END IF;
END;

Não encontro o erro… Alguém pode me ajudar??

Qual o banco de dados?
Se for MySQL é preciso alterar o DELIMITER

    
	CREATE OR REPLACE TRIGGER userIntoCommunity  
    AFTER  
    INSERT   
    ON funcionario  
    FOR EACH ROW  
	DELIMITER $$
    BEGIN  
      
    IF(:new.id_empresa_fk = 1) THEN   
    INSERT  
    INTO comunidade_has_funcionario(id_comunidade_fk, id_usuario_fk)  
    VALUES(4, :new.id_usuario_pk);  
      
    IF(:new.id_empresa_fk = 2) THEN   
    INSERT  
    INTO comunidade_has_funcionario(id_comunidade_fk, id_usuario_fk)  
    VALUES(5, :new.id_usuario_pk);  
      
    ELSE  
    INSERT  
    INTO comunidade_has_funcionario(id_comunidade_fk, id_usuario_fk)  
    VALUES(6, :new.id_usuario_pk);  
      
    END IF $$
    END $$
	DELIMITER ;

É ORACLE!!

muito tempo que não mecho com PL/SQL mas, não ta faltando um ELSIF no seu segundo if não ? :slight_smile:

IF …
ELSIF …
ELSE …
END IF

edit: esse tipo de regra de negócio deveria ficar nos seus componentes do lado da programação e não deixar a trigger com essa responsabilidade :frowning:

[]'s

Infelizmente o erro não é esse…
:frowning:

    CREATE OR REPLACE TRIGGER userIntoCommunity  
    AFTER  
    INSERT   
    ON funcionario  
    FOR EACH ROW  
    BEGIN  
      
    IF(:new.id_empresa_fk = 1) THEN   
    INSERT  
    INTO comunidade_has_funcionario(id_comunidade_fk, id_usuario_fk)  
    VALUES(4, :new.id_usuario_pk);  
      
    ELSIF(:new.id_empresa_fk = 2) THEN   
    INSERT  
    INTO comunidade_has_funcionario(id_comunidade_fk, id_usuario_fk)  
    VALUES(5, :new.id_usuario_pk);  
      
    ELSE  
    INSERT  
    INTO comunidade_has_funcionario(id_comunidade_fk, id_usuario_fk)  
    VALUES(6, :new.id_usuario_pk);  
      
    END IF;  
END userIntoCommunity;
/

se não funcionar, em casa vo baixar o oracle denovo :o)

ah valeu! era isso mesmo!!!
Obrigada!!!