-- 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 `verificaativoalanc` (IN `$idmac` VARCHAR(17), OUT `$ativo` BOOLEAN)   BEGIN
SELECT ativo INTO $ativo from macalanc
WHERE idmacalanc=$idmac;
END$$

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

DELIMITER ;

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

--
-- Estrutura da tabela `leituraalanc`
--

CREATE TABLE `leituraalanc` (
  `idleituraalanc` int(10) UNSIGNED NOT NULL,
  `macalanc_idmacalanc` 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 `leituraalanc`
--
DELIMITER $$
CREATE TRIGGER `tgdeletealanc` AFTER DELETE ON `leituraalanc` FOR EACH ROW BEGIN
UPDATE macalanc
SET contador=contador-1
WHERE 
idmacalanc=old.macalanc_idmacalanc;
END
$$
DELIMITER ;
DELIMITER $$
CREATE TRIGGER `tginsertleituraalanc` AFTER INSERT ON `leituraalanc` FOR EACH ROW BEGIN
UPDATE macalanc
SET contador=contador+1
WHERE idmacalanc=new.macalanc_idmacalanc;
END
$$
DELIMITER ;
DELIMITER $$
CREATE TRIGGER `tgverificaativoalanc` BEFORE INSERT ON `leituraalanc` FOR EACH ROW BEGIN
CALL verificaativoalanc(new.macalanc_idmacalanc,@$ativo);
IF @$ativo=0 then SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT = 'Esta placa está Inativa';
end if;
END
$$
DELIMITER ;
DELIMITER $$
CREATE TRIGGER `tgverificalimitealanc` BEFORE INSERT ON `leituraalanc` FOR EACH ROW BEGIN 
CALL verificalimitealanc(new.macalanc_idmacalanc,@$limite,@$contador);
IF @contador>@limite
THEN SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT = 'Limite de gravações atingido';
END IF;
END
$$
DELIMITER ;

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

--
-- Estrutura da tabela `macalanc`
--

CREATE TABLE `macalanc` (
  `idmacalanc` 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 `macalanc`
--

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

--
-- Índices para tabelas despejadas
--

--
-- Índices para tabela `leituraalanc`
--
ALTER TABLE `leituraalanc`
  ADD PRIMARY KEY (`idleituraalanc`),
  ADD KEY `leituraalanc_FKIndex1` (`macalanc_idmacalanc`);

--
-- Índices para tabela `macalanc`
--
ALTER TABLE `macalanc`
  ADD PRIMARY KEY (`idmacalanc`);

--
-- AUTO_INCREMENT de tabelas despejadas
--

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

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

--
-- Limitadores para a tabela `leituraalanc`
--
ALTER TABLE `leituraalanc`
  ADD CONSTRAINT `leituraalanc_ibfk_1` FOREIGN KEY (`macalanc_idmacalanc`) REFERENCES `macalanc` (`idmacalanc`) ON DELETE NO ACTION ON UPDATE NO ACTION;
COMMIT;

