CREATE OR ALTER TRIGGER TTBOPERADOR_B041U FOR TBOPERADOR
ACTIVE BEFORE INSERT OR UPDATE POSITION 0
AS
DECLARE VARIABLE COLABORADOR_ID INTEGER;
DECLARE VARIABLE COLABORADOR_NOME VARCHAR(200);
BEGIN
   IF(INSERTING)THEN
   BEGIN
     FOR SELECT FIRST 1 A.CODIGO, B.PESSOAL_NOME
           FROM TBOPERADOR A, TBCOLABORADOR B
           WHERE A.COLABORADOR_MATRICULA = B.CODIGO AND A.COLABORADOR_MATRICULA = NEW.COLABORADOR_MATRICULA
           INTO :COLABORADOR_ID,:COLABORADOR_NOME DO
           BEGIN
               EXCEPTION "..." 'JA EXISTE UM OPERADOR CADASTRADO PARA O COLABORADOR '||:COLABORADOR_NOME||'<BR> OPERACAO CANCELADA.';
           END
   END

   IF(UPDATING)THEN
   BEGIN
      IF(NEW.COLABORADOR_MATRICULA IS DISTINCT FROM OLD.COLABORADOR_MATRICULA AND NEW.COLABORADOR_MATRICULA > 0)THEN
      BEGIN
       FOR SELECT FIRST 1 A.CODIGO, B.PESSOAL_NOME
       FROM TBOPERADOR A, TBCOLABORADOR B
       WHERE A.COLABORADOR_MATRICULA = B.CODIGO AND A.COLABORADOR_MATRICULA = NEW.COLABORADOR_MATRICULA
       INTO :COLABORADOR_ID,:COLABORADOR_NOME DO
       BEGIN
           EXCEPTION "..." 'JA EXISTE UM OPERADOR CADASTRADO PARA O COLABORADOR '||:COLABORADOR_NOME||'<BR> OPERACAO CANCELADA.';
       END

      END
   END
END;