﻿CREATE GENERATOR GEN_MINERADO_DEMANDAS_ID;

CREATE TABLE MINERADO_DEMANDAS (
    CODIGO          INTEGER NOT NULL,
    CODIGO_DEMANDA  INTEGER NOT NULL
);


/******************************************************************************/
/***                              Primary Keys                              ***/
/******************************************************************************/

ALTER TABLE MINERADO_DEMANDAS ADD CONSTRAINT PK_MINERADO_DEMANDAS PRIMARY KEY (CODIGO);


/******************************************************************************/
/***                                Indices                                 ***/
/******************************************************************************/

CREATE INDEX IX_CODIGO_DEMANDA ON MINERADO_DEMANDAS (CODIGO_DEMANDA);


/******************************************************************************/
/***                          Triggers for tables                           ***/
/******************************************************************************/

/* Trigger: MINERADO_DEMANDAS_BI */
CREATE OR ALTER TRIGGER MINERADO_DEMANDAS_BI FOR MINERADO_DEMANDAS
ACTIVE BEFORE INSERT POSITION 0
as
begin
  if (new.codigo is null) then
    new.codigo = gen_id(gen_minerado_demandas_id,1);
end



CREATE OR ALTER TRIGGER DEMANDAS_MINERADO FOR DEMANDAS
ACTIVE BEFORE INSERT OR UPDATE POSITION 0
AS
declare variable NUMREG integer;
begin
    NUMREG = 0;

    SELECT COUNT (*) FROM MINERADO_DEMANDAS WHERE CODIGO_DEMANDA = NEW.CODIGO INTO :NUMREG;

    IF(NUMREG < 1) THEN
    BEGIN
        INSERT INTO MINERADO_DEMANDAS(CODIGO_DEMANDA) VALUES(NEW.CODIGO);
    END
end


CREATE OR ALTER TRIGGER DEMANDAS_APONTAMENTOS_MINERADO FOR DEMANDAS_APONTAMENTOS
ACTIVE BEFORE INSERT OR UPDATE POSITION 0
AS
declare variable NUMREG integer;
begin
    NUMREG = 0;

    SELECT COUNT (*) FROM MINERADO_DEMANDAS WHERE CODIGO_DEMANDA = NEW.CODIGO_DEMANDA INTO :NUMREG;

    IF(NUMREG < 1) THEN
    BEGIN
        INSERT INTO MINERADO_DEMANDAS(CODIGO_DEMANDA) VALUES(NEW.CODIGO_DEMANDA);
    END
end


CREATE OR ALTER TRIGGER DEMANDAS_APONTAMENTOS_FOTOS_MIN FOR DEMANDAS_APONTAMENTOS_FOTOS
ACTIVE BEFORE INSERT OR UPDATE POSITION 0
AS
declare variable NUMREG integer;
declare variable CODIGO_DEMANDA_FOTO integer;
begin
    NUMREG = 0;
    CODIGO_DEMANDA_FOTO = 0;

    SELECT FIRST 1 CODIGO_DEMANDA FROM DEMANDAS_APONTAMENTOS WHERE CODIGO = NEW.CODIGO_APONTAMENTO_DEMANDA INTO :CODIGO_DEMANDA_FOTO;

    SELECT COUNT (*) FROM MINERADO_DEMANDAS WHERE CODIGO_DEMANDA = :CODIGO_DEMANDA_FOTO INTO :NUMREG;

    IF(NUMREG < 1) THEN
    BEGIN
        INSERT INTO MINERADO_DEMANDAS(CODIGO_DEMANDA) VALUES(:CODIGO_DEMANDA_FOTO);
    END    
end









CREATE GENERATOR GEN_MINERADO_TAREFAS_ID;

CREATE TABLE MINERADO_TAREFAS (
    CODIGO         INTEGER NOT NULL,
    CODIGO_TAREFA  INTEGER NOT NULL
);


/******************************************************************************/
/***                              Primary Keys                              ***/
/******************************************************************************/

ALTER TABLE MINERADO_TAREFAS ADD CONSTRAINT PK_MINERADO_TAREFAS PRIMARY KEY (CODIGO);


/******************************************************************************/
/***                                Indices                                 ***/
/******************************************************************************/

CREATE INDEX XI_CODIGO_TAREFA ON MINERADO_TAREFAS (CODIGO_TAREFA);


/******************************************************************************/
/***                          Triggers for tables                           ***/
/******************************************************************************/

/* Trigger: MINERADO_TAREFAS_BI */
CREATE OR ALTER TRIGGER MINERADO_TAREFAS_BI FOR MINERADO_TAREFAS
ACTIVE BEFORE INSERT POSITION 0
as
begin
  if (new.codigo is null) then
    new.codigo = gen_id(gen_minerado_tarefas_id,1);
end


CREATE OR ALTER TRIGGER TAREFAS_MINERADO FOR TAREFAS
ACTIVE BEFORE INSERT OR UPDATE POSITION 0
AS
declare variable NUMREG integer;
begin
    NUMREG = 0;

    SELECT COUNT (*) FROM MINERADO_TAREFAS WHERE CODIGO_TAREFA = NEW.CODIGO INTO :NUMREG;

    IF(NUMREG < 1) THEN
    BEGIN
        INSERT INTO MINERADO_TAREFAS(CODIGO_TAREFA) VALUES(NEW.CODIGO);
    END
end


CREATE OR ALTER TRIGGER TAREFAS_APONTAMENTOS_MINERADO FOR TAREFAS_APONTAMENTOS
ACTIVE BEFORE INSERT OR UPDATE POSITION 0
AS
declare variable NUMREG integer;
begin
    NUMREG = 0;

    SELECT COUNT (*) FROM MINERADO_TAREFAS WHERE CODIGO_TAREFA = NEW.CODIGO_TAREFA INTO :NUMREG;

    IF(NUMREG < 1) THEN
    BEGIN
        INSERT INTO MINERADO_TAREFAS(CODIGO_TAREFA) VALUES(NEW.CODIGO_TAREFA);
    END
end


CREATE OR ALTER TRIGGER TAREFAS_APONTAMENTOS_FOTOS_MIN FOR TAREFAS_APONTAMENTOS_FOTOS
ACTIVE BEFORE INSERT OR UPDATE POSITION 0
AS
declare variable NUMREG integer;
declare variable CODIGO_TAREFA_FOTO integer;
begin
    NUMREG = 0;
    CODIGO_TAREFA_FOTO = 0;

    SELECT FIRST 1 CODIGO_TAREFA FROM TAREFAS_APONTAMENTOS WHERE CODIGO = NEW.CODIGO_APONTAMENTO_TAREFA INTO :CODIGO_TAREFA_FOTO;

    SELECT COUNT (*) FROM MINERADO_TAREFAS WHERE CODIGO_TAREFA = :CODIGO_TAREFA_FOTO INTO :NUMREG;

    IF(NUMREG < 1) THEN
    BEGIN
        INSERT INTO MINERADO_TAREFAS(CODIGO_TAREFA) VALUES(:CODIGO_TAREFA_FOTO);
    END 
end