CREATE TABLE macmaria (
  idmacmaria VARCHAR(17)  NOT NULL  ,
  nome VARCHAR(45)  NULL  ,
  contador INTEGER UNSIGNED  NULL DEFAULT 0 ,
  ativo BOOL  NULL DEFAULT 1 ,
  limite INTEGER UNSIGNED  NULL DEFAULT 100   ,
PRIMARY KEY(idmacmaria));



CREATE TABLE sensormaria (
  idsensormaria INTEGER UNSIGNED  NOT NULL   AUTO_INCREMENT,
  nome VARCHAR(45)  NULL  ,
  ativo BOOL  NULL DEFAULT 1 ,
  limite INTEGER UNSIGNED  NULL DEFAULT 100 ,
  contador INTEGER UNSIGNED  NULL DEFAULT 0 ,
  unidade VARCHAR(10)  NULL  ,
  sigla VARCHAR(3)  NULL    ,
PRIMARY KEY(idsensormaria));



CREATE TABLE coletormaria (
  idcoletormaria INTEGER UNSIGNED  NOT NULL   AUTO_INCREMENT,
  nome VARCHAR(45)  NULL  ,
  contador INTEGER UNSIGNED  NULL DEFAULT 0 ,
  ativo BOOL  NULL DEFAULT 1 ,
  limite INTEGER UNSIGNED  NULL DEFAULT 100   ,
PRIMARY KEY(idcoletormaria));



CREATE TABLE leituramaria (
  idleituramaria INTEGER UNSIGNED  NOT NULL   AUTO_INCREMENT,
  sensormaria_idsensormaria INTEGER UNSIGNED  NOT NULL  ,
  macmaria_idmacmaria VARCHAR(17)  NOT NULL  ,
  coletormaria_idcoletormaria INTEGER UNSIGNED  NOT NULL  ,
  dataleitura DATE  NULL  ,
  horaleitura TIME  NULL  ,
  valor INTEGER UNSIGNED ZEROFILL  NULL    ,
PRIMARY KEY(idleituramaria)  ,
INDEX leitura_FKIndex1(macmaria_idmacmaria)  ,
INDEX leitura_FKIndex2(sensormaria_idsensormaria)  ,
INDEX leitura_FKIndex3(coletormaria_idcoletormaria),
  FOREIGN KEY(macmaria_idmacmaria)
    REFERENCES macmaria(idmacmaria)
      ON DELETE NO ACTION
      ON UPDATE NO ACTION,
  FOREIGN KEY(sensormaria_idsensormaria)
    REFERENCES sensormaria(idsensormaria)
      ON DELETE NO ACTION
      ON UPDATE NO ACTION,
  FOREIGN KEY(coletormaria_idcoletormaria)
    REFERENCES coletormaria(idcoletormaria)
      ON DELETE NO ACTION
      ON UPDATE NO ACTION);

DELIMITER $$

/* =========================
   INSERT
   ========================= */
CREATE TRIGGER trg_leitura_ai
AFTER INSERT ON leituramaria
FOR EACH ROW
BEGIN
    UPDATE macmaria
       SET contador = contador + 1
     WHERE idmacmaria = NEW.macmaria_idmacmaria;

    UPDATE sensormaria
       SET contador = contador + 1
     WHERE idsensormaria = NEW.sensormaria_idsensormaria;

    UPDATE coletormaria
       SET contador = contador + 1
     WHERE idcoletormaria = NEW.coletormaria_idcoletormaria;
END$$


/* =========================
   DELETE
   ========================= */
CREATE TRIGGER trg_leitura_ad
AFTER DELETE ON leituramaria
FOR EACH ROW
BEGIN
    UPDATE macmaria
       SET contador = contador - 1
     WHERE idmacmaria = OLD.macmaria_idmacmaria;

    UPDATE sensormaria
       SET contador = contador - 1
     WHERE idsensormaria = OLD.sensormaria_idsensormaria;

    UPDATE coletormaria
       SET contador = contador - 1
     WHERE idcoletormaria = OLD.coletormaria_idcoletormaria;
END$$


/* =========================
   UPDATE
   ========================= */
CREATE TRIGGER trg_leitura_au
AFTER UPDATE ON leituramaria
FOR EACH ROW
BEGIN

    /* MAC */
    IF OLD.macmaria_idmacmaria <> NEW.macmaria_idmacmaria THEN

        UPDATE macmaria
           SET contador = contador - 1
         WHERE idmacmaria = OLD.macmaria_idmacmaria;

        UPDATE macmaria
           SET contador = contador + 1
         WHERE idmacmaria = NEW.macmaria_idmacmaria;

    END IF;

    /* SENSOR */
    IF OLD.sensormaria_idsensormaria <> NEW.sensormaria_idsensormaria THEN

        UPDATE sensormaria
           SET contador = contador - 1
         WHERE idsensormaria = OLD.sensormaria_idsensormaria;

        UPDATE sensormaria
           SET contador = contador + 1
         WHERE idsensormaria = NEW.sensormaria_idsensormaria;

    END IF;

    /* COLETOR */
    IF OLD.coletormaria_idcoletormaria <> NEW.coletormaria_idcoletormaria THEN

        UPDATE coletormaria
           SET contador = contador - 1
         WHERE idcoletormaria = OLD.coletormaria_idcoletormaria;

        UPDATE coletormaria
           SET contador = contador + 1
         WHERE idcoletormaria = NEW.coletormaria_idcoletormaria;

    END IF;

END$$

DELIMITER ;


