-- https://www.phpmyadmin.net/
--
-- Tempo de geração: 06-Mar-2026 às 19:11
-- Versão do servidor: 10.4.24-MariaDB
-- versão do PHP: 8.1.6

START TRANSACTION;



--
-- Banco de dados: `bancoleitura`
--

DELIMITER $$
--
-- Procedimentos
--
CREATE DEFINER=`root`@`localhost` PROCEDURE `verificaativohelana` (IN `$idmac` VARCHAR(17), OUT `$ativo` BOOLEAN)   BEGIN
SELECT ativo INTO $ativo from machelana
WHERE idmachelana=$idmac;
END$$

CREATE DEFINER=`root`@`localhost` PROCEDURE `verificalimitehelana` (IN `$idmac` VARCHAR(17), OUT `$limite` INT, OUT `$contador` INT)   BEGIN
SELECT limite INTO $limite
FROM machelana
WHERE idmachelana=$idmac;
SELECT contador INTO $contador
FROM machelana
WHERE idmachelana=$idmac;
END$$

DELIMITER ;

-- --------------------------------------------------------

--
-- Estrutura da tabela `leiturahelana`
--

CREATE TABLE `leiturahelana` (
  `idleiturahelana` int(10) UNSIGNED NOT NULL,
  `machelana_idmachelana` varchar(17) NOT NULL,
  `dataleitura` date DEFAULT NULL,
  `horaleitura` time DEFAULT NULL,
  `umidade` double DEFAULT NULL,
  `temperatura` double DEFAULT NULL,
  `luz` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

--
-- Acionadores `leiturahelana`
--
DELIMITER $$
CREATE TRIGGER `tgdeletehelana` AFTER DELETE ON `leiturahelana` FOR EACH ROW BEGIN
UPDATE machelana
SET contador=contador-1
WHERE 
idmachelana=old.machelana_idmachelana;
END
$$
DELIMITER ;
DELIMITER $$
CREATE TRIGGER `tginsertleiturahelana` AFTER INSERT ON `leiturahelana` FOR EACH ROW BEGIN
UPDATE machelana
SET contador=contador+1
WHERE idmachelana=new.machelana_idmachelana;
END
$$
DELIMITER ;
DELIMITER $$
CREATE TRIGGER `tgverificaativohelana` BEFORE INSERT ON `leiturahelana` FOR EACH ROW BEGIN
CALL verificaativohelana(new.machelana_idmachelana,@$ativo);
IF @$ativo=0 then SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT = 'Esta placa está Inativa';
end if;
END
$$
DELIMITER ;
DELIMITER $$
CREATE TRIGGER `tgverificalimitehelana` BEFORE INSERT ON `leiturahelana` FOR EACH ROW BEGIN 
CALL verificalimitehelana(new.machelana_idmachelana,@$limite,@$contador);
IF @contador>@limite
THEN SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT = 'Limite de gravações atingido';
END IF;
END
$$
DELIMITER ;

-- --------------------------------------------------------

--
-- Estrutura da tabela `machelana`
--

CREATE TABLE `machelana` (
  `idmachelana` varchar(17) NOT NULL,
  `nome` varchar(35) DEFAULT NULL,
  `contador` int(10) UNSIGNED DEFAULT 0,
  `limite` int(10) UNSIGNED DEFAULT NULL,
  `ativo` tinyint(1) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

--
-- Extraindo dados da tabela `machelana`
--

INSERT INTO `machelana` (`idmachelana`, `nome`, `contador`, `limite`, `ativo`) VALUES
('DC:4F:22:0D:61:3B', 'Placa teste', 0, 50, 0);

--
-- Índices para tabelas despejadas
--

--
-- Índices para tabela `leiturahelana`
--
ALTER TABLE `leiturahelana`
  ADD PRIMARY KEY (`idleiturahelana`),
  ADD KEY `leiturahelana_FKIndex1` (`machelana_idmachelana`);

--
-- Índices para tabela `machelana`
--
ALTER TABLE `machelana`
  ADD PRIMARY KEY (`idmachelana`);

--
-- AUTO_INCREMENT de tabelas despejadas
--

--
-- AUTO_INCREMENT de tabela `leiturahelana`
--
ALTER TABLE `leiturahelana`
  MODIFY `idleiturahelana` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=4;

--
-- Restrições para despejos de tabelas
--

--
-- Limitadores para a tabela `leiturahelana`
--
ALTER TABLE `leiturahelana`
  ADD CONSTRAINT `leiturahelana_ibfk_1` FOREIGN KEY (`machelana_idmachelana`) REFERENCES `machelana` (`idmachelana`) ON DELETE NO ACTION ON UPDATE NO ACTION;
COMMIT;

