CREATE TABLE TBMODELO_CONJUNTO_COR (
    ID INTEGER NOT NULL,
    MODELO_PAI_ID INTEGER,
    MODELO_FILHO_ID INTEGER,
    COR_PAI_ID INTEGER,
    COR_FILHO_ID INTEGER);

ALTER TABLE TBMODELO_CONJUNTO_COR
ADD CONSTRAINT PK_TBMODELO_CONJUNTO_COR
PRIMARY KEY (ID);

CREATE SEQUENCE GTBMODELO_CONJUNTO_COR;

SET TERM ^ ;

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

SET TERM ; ^

SET TERM ^ ;

CREATE trigger itbmodelo_conjunto_cor_b02i for tbmodelo_conjunto_cor
active before insert position 2
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN

    HISTORICO = '';

    IF ( NEW.modelo_pai_id > 0) THEN
    BEGIN
        HISTORICO = HISTORICO||'Cor conjunto:'||coalesce(new.cor_pai_id,'0')||' -> '||coalesce(new.cor_filho_id,'0');
    END

    IF (HISTORICO <> '') THEN
    BEGIN
        EXECUTE PROCEDURE SPI_HISTORICO('TBMODELO',NEW.modelo_pai_id, HISTORICO);
    END
end
^

SET TERM ; ^

SET TERM ^ ;

CREATE trigger itbmodelo_conjunto_cor_b01d for tbmodelo_conjunto_cor
active before delete position 1
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN

    HISTORICO = '';

    IF ( old.modelo_pai_id > 0) THEN
    BEGIN
        HISTORICO = HISTORICO||'Cor conjunto removida:'||coalesce(old.cor_pai_id,'0')||' -> '||coalesce(old.cor_filho_id,'0');
    END

    IF (HISTORICO <> '') THEN
    BEGIN
        EXECUTE PROCEDURE SPI_HISTORICO('TBMODELO',old.modelo_pai_id, HISTORICO);
    END
end
^

SET TERM ; ^


SET TERM ^ ;

CREATE OR ALTER trigger itbmodelo_conjunto_cor_b02i for tbmodelo_conjunto_cor
active before insert position 2
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN

    HISTORICO = '';

    IF ( NEW.modelo_pai_id > 0) THEN
    BEGIN
        HISTORICO = HISTORICO||'Cor conjunto adicionada:'||coalesce(new.cor_pai_id,'0')||' : '||coalesce(new.cor_filho_id,'0');
    END

    IF (HISTORICO <> '') THEN
    BEGIN
        EXECUTE PROCEDURE SPI_HISTORICO('TBMODELO',NEW.modelo_pai_id, HISTORICO);
    END
end
^

SET TERM ; ^

SET TERM ^ ;

CREATE OR ALTER trigger itbmodelo_conjunto_cor_b01d for tbmodelo_conjunto_cor
active before delete position 1
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN

    HISTORICO = '';

    IF ( old.modelo_pai_id > 0) THEN
    BEGIN
        HISTORICO = HISTORICO||'Cor conjunto removida:'||coalesce(old.cor_pai_id,'0')||' : '||coalesce(old.cor_filho_id,'0');
    END

    IF (HISTORICO <> '') THEN
    BEGIN
        EXECUTE PROCEDURE SPI_HISTORICO('TBMODELO',old.modelo_pai_id, HISTORICO);
    END
end
^

SET TERM ; ^


CREATE INDEX ITBMODELO_CONJUNTO_COR_04
ON TBMODELO_CONJUNTO_COR (COR_FILHO_ID);

CREATE INDEX ITBMODELO_CONJUNTO_COR_03
ON TBMODELO_CONJUNTO_COR (COR_PAI_ID);

CREATE INDEX ITBMODELO_CONJUNTO_COR_02
ON TBMODELO_CONJUNTO_COR (MODELO_FILHO_ID);

CREATE INDEX ITBMODELO_CONJUNTO_COR_01
ON TBMODELO_CONJUNTO_COR (MODELO_PAI_ID);


