SET TERM ^ ;
CREATE OR ALTER TRIGGER TTBMODELO00IU FOR TBMODELO
ACTIVE BEFORE INSERT OR UPDATE POSITION 0
AS
DECLARE VARIABLE MODELO_CODIGO INTEGER;
DECLARE VARIABLE MODELO_DESCRICAO VARCHAR(200);
BEGIN
  MODELO_CODIGO = 0;
  MODELO_DESCRICAO = '';
  IF(NEW.CLASSIFICACAO <> ' ')THEN
  BEGIN
     NEW.CLASSIFICACAO = TRIM(NEW.CLASSIFICACAO);
  END

  IF(COALESCE(NEW.MARCA,'') <> '')THEN
  BEGIN
    NEW.MARCA = UPPER(COALESCE(NEW.MARCA,''));
  END                                         

  IF(COALESCE(NEW.TIPO_TAG,'') <> '')THEN
  BEGIN
    NEW.TIPO_TAG = UPPER(COALESCE(NEW.TIPO_TAG,''));
  END

  IF(INSERTING)THEN
  BEGIN
   -- MODELO_CODIGO = COALESCE((SELECT FIRST 1 CODIGO FROM TBMODELO WHERE CODIGO = NEW.CODIGO),0);
     FOR
     SELECT FIRST 1 CODIGO, DESCRICAO
     FROM TBMODELO WHERE (CODIGO = NEW.CODIGO OR DESCRICAO = NEW.DESCRICAO)
     INTO MODELO_CODIGO, MODELO_DESCRICAO DO
     BEGIN
       IF(MODELO_CODIGO > 0 AND NEW.CODIGO = MODELO_CODIGO)THEN
       BEGIN
           EXCEPTION "..." 'JÁ EXISTE UM MODELO CADASTRADO COM O ID:'||MODELO_CODIGO||'!, OPERAÇÃO CANCELADA!';
       END

       IF(MODELO_DESCRICAO IS NOT NULL AND NEW.DESCRICAO = MODELO_DESCRICAO)THEN
       BEGIN
           EXCEPTION "..." 'JÁ EXISTE UM MODELO CADASTRADO COM A DESCRICAO: '||MODELO_DESCRICAO||'!, OPERAÇÃO CANCELADA!';
       END
     END
   END
   IF(UPDATING)THEN
   BEGIN
       IF(NEW.DESCRICAO IS DISTINCT FROM OLD.DESCRICAO AND COALESCE(NEW.DESCRICAO,'') <> '')THEN
       BEGIN
          :MODELO_DESCRICAO = COALESCE((SELECT FIRST 1 DESCRICAO FROM TBMODELO WHERE DESCRICAO = NEW.DESCRICAO),'');
          IF(:MODELO_DESCRICAO <> '')THEN
          BEGIN
              EXCEPTION "..." 'JÁ EXISTE UM MODELO CADASTRADO COM A DESCRICAO: '||NEW.DESCRICAO||'!, OPERAÇÃO CANCELADA!';
          END
       END
   END
END
^ SET TERM ; ^