CREATE TABLE macmurilo (
  idmacmurilo 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(idmacmurilo));



CREATE TABLE sensormurilo (
  idsensormurilo 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(idsensormurilo));



CREATE TABLE coletormurilo (
  idcoletormurilo 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(idcoletormurilo));



CREATE TABLE leituramurilo (
  idleituramurilo INTEGER UNSIGNED  NOT NULL   AUTO_INCREMENT,
  sensormurilo_idsensorMurilo INTEGER UNSIGNED  NOT NULL  ,
  macmurilo_idmacMurilo VARCHAR(17)  NOT NULL  ,
  coletormurilo_idcoletorMurilo INTEGER UNSIGNED  NOT NULL  ,
  dataleitura DATE  NULL  ,
  horaleitura TIME  NULL  ,
  valor INTEGER UNSIGNED ZEROFILL  NULL    ,
PRIMARY KEY(idleituramurilo)  ,
INDEX leitura_FKIndex1(macmurilo_idmacMurilo)  ,
INDEX leitura_FKIndex2(sensormurilo_idsensorMurilo)  ,
INDEX leitura_FKIndex3(coletormurilo_idcoletorMurilo),
  FOREIGN KEY(macmurilo_idmacMurilo)
    REFERENCES macmurilo(idmacMurilo)
      ON DELETE NO ACTION
      ON UPDATE NO ACTION,
  FOREIGN KEY(sensormurilo_idsensorMurilo)
    REFERENCES sensormurilo(idsensorMurilo)
      ON DELETE NO ACTION
      ON UPDATE NO ACTION,
  FOREIGN KEY(coletormurilo_idcoletorMurilo)
    REFERENCES coletormurilo(idcoletorMurilo)
      ON DELETE NO ACTION
      ON UPDATE NO ACTION);

DELIMITER $$

/* =========================
   INSERT
   ========================= */
CREATE TRIGGER trg_leitura_ai
AFTER INSERT ON leituramurilo
FOR EACH ROW
BEGIN
    UPDATE macmurilo
       SET contador = contador + 1
     WHERE idmacmurilo = NEW.macmurilo_idmacMurilo;

    UPDATE sensormurilo
       SET contador = contador + 1
     WHERE idsensormurilo = NEW.sensormurilo_idsensorMurilo;

    UPDATE coletormurilo
       SET contador = contador + 1
     WHERE idcoletormurilo = NEW.coletormurilo_idcoletorMurilo;
END$$


/* =========================
   DELETE
   ========================= */
CREATE TRIGGER trg_leitura_ad
AFTER DELETE ON leituramurilo
FOR EACH ROW
BEGIN
    UPDATE macmurilo
       SET contador = contador - 1
     WHERE idmacmurilo = OLD.macmurilo_idmacMurilo;

    UPDATE sensormurilo
       SET contador = contador - 1
     WHERE idsensormurilo = OLD.sensormurilo_idsensorMurilo;

    UPDATE coletormurilo
       SET contador = contador - 1
     WHERE idcoletormurilo = OLD.coletormurilo_idcoletorMurilo;
END$$


/* =========================
   UPDATE
   ========================= */
CREATE TRIGGER trg_leitura_au
AFTER UPDATE ON leituramurilo
FOR EACH ROW
BEGIN

    /* MAC */
    IF OLD.macmurilo_idmacMurilo <> NEW.macmurilo_idmacMurilo THEN

        UPDATE macmurilo
           SET contador = contador - 1
         WHERE idmacmurilo = OLD.macmurilo_idmacMurilo;

        UPDATE macmurilo
           SET contador = contador + 1
         WHERE idmacmurilo = NEW.macmurilo_idmacMurilo;

    END IF;

    /* SENSOR */
    IF OLD.sensormurilo_idsensorMurilo <> NEW.sensormurilo_idsensorMurilo THEN

        UPDATE sensormurilo
           SET contador = contador - 1
         WHERE idsensormurilo = OLD.sensormurilo_idsensorMurilo;

        UPDATE sensormurilo
           SET contador = contador + 1
         WHERE idsensormurilo = NEW.sensormurilo_idsensorMurilo;

    END IF;

    /* COLETOR */
    IF OLD.coletormurilo_idcoletorMurilo <> NEW.coletormurilo_idcoletorMurilo THEN

        UPDATE coletormurilo
           SET contador = contador - 1
         WHERE idcoletormurilo = OLD.coletormurilo_idcoletorMurilo;

        UPDATE coletormurilo
           SET contador = contador + 1
         WHERE idcoletormurilo = NEW.coletormurilo_idcoletorMurilo;

    END IF;

END$$

DELIMITER ;


