SET TERM ^ ;

CREATE OR ALTER trigger ttbtabela_preco_b01u for tbtabela_preco
active before update position 0
AS
DECLARE VARIABLE COUNT_REGISTERS_MODELO INTEGER;
DECLARE VARIABLE COUNT_REGISTERS_PRODUTO INTEGER;
BEGIN

  IF(NEW.ESTABELECIMENTO_ID <> OLD.ESTABELECIMENTO_ID) THEN
  BEGIN
    
    SELECT COUNT(T.ID) FROM TBMODELO_PRECO T WHERE T.TABELA_ID = NEW.ID INTO :COUNT_REGISTERS_MODELO;

    IF(:COUNT_REGISTERS_MODELO > 0) THEN
    BEGIN
        UPDATE TBMODELO_PRECO T SET T.ESTABELECIMENTO_CODIGO = NEW.ESTABELECIMENTO_ID WHERE T.TABELA_ID = NEW.ID;
        --EXCEPTION "..." 'TABELA DE PRECO JA VINCULADA EM MODELOS. ATUALIZACAO DE ESTABELECIMENTO CANCELADA!';

    END ELSE
    BEGIN

        SELECT COUNT(T.ID) FROM TBPRODUTO_PRECO T WHERE T.TABELA_ID = NEW.ID INTO :COUNT_REGISTERS_PRODUTO;
    
        IF(:COUNT_REGISTERS_PRODUTO > 0) THEN
        BEGIN
            --EXCEPTION "..." 'TABELA DE PRECO JA VINCULADA EM PRODUTOS. ATUALIZACAO DE ESTABELECIMENTO CANCELADA!';
            UPDATE TBPRODUTO_PRECO T SET T.ESTABELECIMENTO_CODIGO = NEW.ESTABELECIMENTO_ID WHERE T.TABELA_ID = NEW.ID;
    
        END

    END

  END
END
^

SET TERM ; ^

