CREATE OR ALTER TRIGGER TTBCOR00IU FOR TBCOR
ACTIVE BEFORE INSERT OR UPDATE POSITION 0
AS
declare variable COR_ID INTEGER;
declare variable COR_DESC VARCHAR(500);
begin

  COR_DESC = '';

  if(new.perfil <> ' ')then
  begin
     new.perfil = trim(new.perfil);
  end

  new.amostra = coalesce(new.amostra,0);

  NEW.Descricao = REPLACE(NEW.Descricao,'|','-');
  NEW.Descricao = REPLACE(NEW.Descricao,'"',' ');
  NEW.Descricao = REPLACE(NEW.Descricao,'''',' ');

  IF(INSERTING)THEN
  BEGIN
     COR_ID = COALESCE((SELECT FIRST 1 A.CODIGO FROM TBCOR A WHERE A.DESCRICAO = NEW.DESCRICAO AND A.CODIGO <> NEW.CODIGO),0);
     IF(COR_ID > 0)THEN
     BEGIN
        EXCEPTION "..." 'JA EXISTE UMA COR CADASTRADA COM A DESCRICAO: '||NEW.DESCRICAO||'!, OPERAÇÃO CANCELADA!';
     END 

     COR_DESC = COALESCE((SELECT FIRST 1 FN_LPAD(A.CODIGO,4,0)||' - '||A.DESCRICAO FROM TBCOR A WHERE A.ABREVIADO = NEW.ABREVIADO AND A.CODIGO <> NEW.CODIGO),0);
     IF(COR_DESC <> '')THEN
     BEGIN
        EXCEPTION "..." 'JA EXISTE UMA COR CADASTRADA COM A DESCRICAO ABREVIADA: '||NEW.ABREVIADO||'.<br> COR: '||COR_DESC||'.<BR> OPERAÇÃO CANCELADA!';
     END
  END

  IF(UPDATING)THEN
  BEGIN
      IF(NEW.DESCRICAO IS DISTINCT FROM OLD.DESCRICAO AND COALESCE(NEW.DESCRICAO,'') <> '')THEN
      BEGIN
         COR_ID = COALESCE((SELECT FIRST 1 A.CODIGO FROM TBCOR A WHERE A.DESCRICAO = NEW.DESCRICAO AND A.CODIGO <> NEW.CODIGO),0);
         IF(COR_ID > 0)THEN
         BEGIN
            EXCEPTION "..." 'JA EXISTE UMA COR CADASTRADA COM A DESCRICAO: '||NEW.DESCRICAO||'!, OPERAÇÃO CANCELADA!';
         END
      END 

      IF(NEW.ABREVIADO IS DISTINCT FROM OLD.ABREVIADO AND COALESCE(NEW.ABREVIADO,'') <> '')THEN
      BEGIN
         COR_DESC = COALESCE((SELECT FIRST 1 FN_LPAD(A.CODIGO,4,0)||' - '||A.DESCRICAO FROM TBCOR A WHERE A.ABREVIADO = NEW.ABREVIADO AND A.CODIGO <> NEW.CODIGO),0);
         IF(COR_DESC <> '')THEN
         BEGIN
            EXCEPTION "..." 'JA EXISTE UMA COR CADASTRADA COM A DESCRICAO ABREVIADA: '||NEW.ABREVIADO||'.<br> COR: '||COR_DESC||'.<BR> OPERAÇÃO CANCELADA!';
         END
      END
  END

end