CREATE TABLE TBCODIGO_PAIS (
    ID INTEGER NOT NULL,
    CODIGO INTEGER NOT NULL,
    NOME_PAIS VARCHAR(50),
    TRIBUTACAO_FAVORECIDA INTEGER);

ALTER TABLE TBCODIGO_PAIS
ADD CONSTRAINT PK_TBCODIGO_PAIS
PRIMARY KEY (ID,CODIGO);

CREATE SEQUENCE GTBCODIGO_PAIS_ID;

SET TERM ^ ;

create trigger ttbcodigo_pais_b01i for tbcodigo_pais
active before insert position 0
as
begin
  if (new.id is null) then
    new.id = gen_id(gtbcodigo_pais_id,1);
end
^

SET TERM ; ^

UPDATE OR INSERT INTO TBMENU (CONTROLE, GRUPO, SUBGRUPO, TIPO, URL, DESCRICAO, DATAHORA)
                      VALUES (21280, 'FIS', 'FIS', '1   ', '', 'CADASTRO DE CÓDIGO DE PAÍSES', '2022-08-26 09:05:38')
                    MATCHING (CONTROLE);

COMMIT WORK;

SET TERM ^ ;

CREATE trigger tbcodigo_pais_b01i for tbcodigo_pais
active before insert position 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN
    HISTORICO = '';

    IF ( NEW.ID > 0) THEN
    BEGIN
        HISTORICO = HISTORICO||' REGISTRO INCLUIDO';
    END

    IF (HISTORICO <> '') THEN
    BEGIN
        EXECUTE PROCEDURE SPI_HISTORICO('TBCODIGO_PAIS',NEW.ID, HISTORICO);
    END
END
^

SET TERM ; ^

SET TERM ^ ;

CREATE trigger tbcodigo_pais_b01d for tbcodigo_pais
active before delete position 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN
    HISTORICO = '';

    IF ( OLD.ID > 0) THEN
    BEGIN
        HISTORICO = HISTORICO||' REGISTRO EXCLUIDO';
    END

    IF (HISTORICO <> '') THEN
    BEGIN
        EXECUTE PROCEDURE SPI_HISTORICO('TBCODIGO_PAIS',OLD.ID, HISTORICO);
    END
END
^

SET TERM ; ^

SET TERM ^ ;

CREATE trigger tbcodigo_pais_b01u for tbcodigo_pais
active before update position 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN
    HISTORICO = '';

    IF ( NEW.CODIGO IS DISTINCT FROM OLD.CODIGO) THEN
    BEGIN
        HISTORICO = HISTORICO||' CODIGO:'||COALESCE(OLD.CODIGO, 0)||'->'||COALESCE(NEW.CODIGO, 0);
    END

    IF ( NEW.NOME_PAIS IS DISTINCT FROM OLD.NOME_PAIS) THEN
    BEGIN
        HISTORICO = HISTORICO||' PAIS:'||COALESCE(OLD.NOME_PAIS, '')||'->'||COALESCE(NEW.NOME_PAIS, '');
    END

    IF ( NEW.TRIBUTACAO_FAVORECIDA IS DISTINCT FROM OLD.TRIBUTACAO_FAVORECIDA) THEN
    BEGIN
        HISTORICO = HISTORICO||' TRIB.FAV:'||COALESCE(OLD.TRIBUTACAO_FAVORECIDA, 0)||'->'||COALESCE(NEW.TRIBUTACAO_FAVORECIDA, 0);
    END

    IF (HISTORICO <> '') THEN
    BEGIN
        HISTORICO = ' REGISTRO ALTERADO: '||HISTORICO;
        EXECUTE PROCEDURE SPI_HISTORICO('TBCODIGO_PAIS',NEW.ID, HISTORICO);
    END
END
^

SET TERM ; ^



