-- phpMyAdmin SQL Dump
-- version 5.2.1
-- https://www.phpmyadmin.net/
--
-- Host: 127.0.0.1
-- Tempo de geração: 12-Jun-2026 às 20:25
-- Versão do servidor: 10.4.32-MariaDB
-- versão do PHP: 8.2.12

SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
START TRANSACTION;
SET time_zone = "+00:00";


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;

--
-- Banco de dados: `bancoheloisaribeiro`
--

DELIMITER $$
--
-- Procedimentos
--
CREATE DEFINER=`root`@`localhost` PROCEDURE `verificaativocoletorribeiro` (IN `$idmac` INT, OUT `$ativo` INT)   BEGIN
SELECT ativo INTO $ativo
FROM coletorribeiro
WHERE idcoletorribeiro=$idmac;
END$$

CREATE DEFINER=`root`@`localhost` PROCEDURE `verificaativoribeiro` (IN `$idmac` VARCHAR(17), OUT `$ativo` BOOLEAN)   BEGIN
    
    SELECT ativo INTO @ativo 
    FROM macribeiro
    WHERE idmacribeiro = $idmac;

    
    IF @ativo = 0 THEN
        SIGNAL SQLSTATE '45000'
        SET MESSAGE_TEXT = 'Esta placa está Inativa';
    END IF;
END$$

CREATE DEFINER=`root`@`localhost` PROCEDURE `verificaativosensorribeiro` (IN `$idmac` INT, OUT `$ativo` INT)   BEGIN
SELECT ativo INTO $ativo
FROM sensorribeiro
WHERE idsensorribeiro=$idmac;
END$$

CREATE DEFINER=`root`@`localhost` PROCEDURE `verificalimitecoletorribeiro` (IN `$idmac` INT, OUT `$limite` INT, OUT `$contador` INT)   BEGIN
SELECT limite INTO $limite
FROM coletorribeiro
WHERE idcoletorribeiro=$idmac;
SELECT contador INTO $contador
FROM coletorribeiro
WHERE idcoletorribeiro=$idmac;
END$$

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

CREATE DEFINER=`root`@`localhost` PROCEDURE `verificalimitesensorribeiro` (IN `$idmac` INT, OUT `$limite` INT, OUT `$contador` INT)   BEGIN
SELECT limite INTO $limite
FROM sensorribeiro
WHERE idsensorribeiro=$idmac;
SELECT contador INTO $contador
FROM sensorribeiro
WHERE idsensorribeiro=$idmac;
END$$

DELIMITER ;

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

--
-- Estrutura da tabela `coletorribeiro`
--

CREATE TABLE `coletorribeiro` (
  `idcoletorribeiro` int(10) UNSIGNED NOT NULL,
  `nome` varchar(45) DEFAULT NULL,
  `contador` int(10) UNSIGNED DEFAULT 0,
  `ativo` tinyint(1) DEFAULT 1,
  `limite` int(10) UNSIGNED DEFAULT 100
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

--
-- Extraindo dados da tabela `coletorribeiro`
--

INSERT INTO `coletorribeiro` (`idcoletorribeiro`, `nome`, `contador`, `ativo`, `limite`) VALUES
(1, 'Coletor Teste', 0, 1, 5);

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

--
-- Estrutura da tabela `leituraribeiro`
--

CREATE TABLE `leituraribeiro` (
  `idleituraribeiro` int(10) UNSIGNED NOT NULL,
  `sensorribeiro_idsensorribeiro` int(10) UNSIGNED NOT NULL,
  `coletorribeiro_idcoletorribeiro` int(10) UNSIGNED NOT NULL,
  `macribeiro_idmacribeiro` varchar(17) NOT NULL,
  `dataleitura` date DEFAULT NULL,
  `horaleitura` time DEFAULT NULL,
  `valor` int(10) UNSIGNED ZEROFILL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

--
-- Extraindo dados da tabela `leituraribeiro`
--

INSERT INTO `leituraribeiro` (`idleituraribeiro`, `sensorribeiro_idsensorribeiro`, `coletorribeiro_idcoletorribeiro`, `macribeiro_idmacribeiro`, `dataleitura`, `horaleitura`, `valor`) VALUES
(2, 1, 1, 'AA:BB:CC:DD:EE:FF', '2024-01-01', '10:00:00', 0000000100),
(3, 1, 1, 'AA:BB:CC:DD:EE:FF', '2024-01-01', '10:00:00', 0000000100),
(4, 1, 1, 'AA:BB:CC:DD:EE:FF', '2024-01-01', '10:00:00', 0000000100),
(5, 1, 1, 'AA:BB:CC:DD:EE:FF', '2024-01-01', '10:00:00', 0000000100);

--
-- Acionadores `leituraribeiro`
--
DELIMITER $$
CREATE TRIGGER `tgdeleteleituraribeiro` AFTER DELETE ON `leituraribeiro` FOR EACH ROW BEGIN

UPDATE macribeiro
SET contador = contador - 1
WHERE idmacribeiro = OLD.macribeiro_idmacribeiro;

UPDATE coletorribeiro
SET contador = contador - 1
WHERE idcoletorribeiro = OLD.coletorribeiro_idcoletorribeiro;

UPDATE sensorribeiro
SET contador = contador - 1
WHERE idsensorribeiro = OLD.sensorribeiro_idsensorribeiro;

END
$$
DELIMITER ;
DELIMITER $$
CREATE TRIGGER `tginsertleituraribeiro` AFTER INSERT ON `leituraribeiro` FOR EACH ROW BEGIN
UPDATE macribeiro
SET contador=contador+1
WHERE idmacribeiro=new.macribeiro_idmacribeiro;

UPDATE sensorribeiro
SET contador=contador+1
WHERE idsensorribeiro=new.sensorribeiro_idsensorribeiro;

UPDATE coletorribeiro
SET contador=contador+1
WHERE idcoletorribeiro=new.coletorribeiro_idcoletorribeiro;
END
$$
DELIMITER ;
DELIMITER $$
CREATE TRIGGER `tgvericalimiteribeiro` BEFORE INSERT ON `leituraribeiro` FOR EACH ROW BEGIN
CALL verificaativoribeiro(new.macribeiro_idmacribeiro,@$ativo);
IF @$ativo=0 THEN SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT = 'Esta placa está Inativa';
END IF;
CALL verificalimiteribeiro(new.macribeiro_idmacribeiro,@$contador,@$limite);
IF @$contador>=@$limite
THEN SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT = 'Limite de gravações atingido';
END IF;
END
$$
DELIMITER ;
DELIMITER $$
CREATE TRIGGER `tgverificacoletorribeiro` BEFORE INSERT ON `leituraribeiro` FOR EACH ROW BEGIN
CALL verificaativocoletorribeiro(new.coletorribeiro_idcoletorribeiro,@$ativo);
IF @$ativo=0 THEN SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT = 'Este coletor está Inativo';
END IF;
CALL verificalimitecoletorribeiro(new.coletorribeiro_idcoletorribeiro,@$contador,@$limite);
IF @$contador>=@$limite
THEN SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT = 'Limite de gravações atingido';
END IF;
END
$$
DELIMITER ;
DELIMITER $$
CREATE TRIGGER `tgverificasensorribeiro` BEFORE INSERT ON `leituraribeiro` FOR EACH ROW BEGIN
CALL verificaativosensorribeiro(new.sensorribeiro_idsensorribeiro,@$ativo);
IF @$ativo=0 THEN SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT = 'Este sensor está Inativo';
END IF;
CALL verificalimitesensorribeiro(new.sensorribeiro_idsensorribeiro,@$contador,@$limite);
IF @$contador>=@$limite
THEN SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT = 'Limite de gravações atingido';
END IF;
END
$$
DELIMITER ;

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

--
-- Estrutura da tabela `macribeiro`
--

CREATE TABLE `macribeiro` (
  `idmacribeiro` varchar(17) NOT NULL,
  `nome` varchar(45) DEFAULT NULL,
  `contador` int(10) UNSIGNED DEFAULT 0,
  `ativo` tinyint(1) DEFAULT 1,
  `limite` int(10) UNSIGNED DEFAULT 100
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

--
-- Extraindo dados da tabela `macribeiro`
--

INSERT INTO `macribeiro` (`idmacribeiro`, `nome`, `contador`, `ativo`, `limite`) VALUES
('AA:BB:CC:DD:EE:FF', 'Mac Teste', 0, 1, 5);

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

--
-- Estrutura da tabela `sensorribeiro`
--

CREATE TABLE `sensorribeiro` (
  `idsensorribeiro` int(10) UNSIGNED NOT NULL,
  `nome` varchar(45) DEFAULT NULL,
  `ativo` tinyint(1) DEFAULT 1,
  `limite` int(10) UNSIGNED DEFAULT 100,
  `contador` int(10) UNSIGNED DEFAULT 0,
  `unidade` varchar(10) DEFAULT NULL,
  `sigla` varchar(3) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

--
-- Extraindo dados da tabela `sensorribeiro`
--

INSERT INTO `sensorribeiro` (`idsensorribeiro`, `nome`, `ativo`, `limite`, `contador`, `unidade`, `sigla`) VALUES
(1, 'Sensor Teste', 1, 5, 0, 'Celsius', 'C');

--
-- Índices para tabelas despejadas
--

--
-- Índices para tabela `coletorribeiro`
--
ALTER TABLE `coletorribeiro`
  ADD PRIMARY KEY (`idcoletorribeiro`);

--
-- Índices para tabela `leituraribeiro`
--
ALTER TABLE `leituraribeiro`
  ADD PRIMARY KEY (`idleituraribeiro`),
  ADD KEY `leitura_FKIndex1` (`macribeiro_idmacribeiro`),
  ADD KEY `leitura_FKIndex2` (`sensorribeiro_idsensorribeiro`),
  ADD KEY `leitura_FKIndex3` (`coletorribeiro_idcoletorribeiro`);

--
-- Índices para tabela `macribeiro`
--
ALTER TABLE `macribeiro`
  ADD PRIMARY KEY (`idmacribeiro`);

--
-- Índices para tabela `sensorribeiro`
--
ALTER TABLE `sensorribeiro`
  ADD PRIMARY KEY (`idsensorribeiro`);

--
-- AUTO_INCREMENT de tabelas despejadas
--

--
-- AUTO_INCREMENT de tabela `coletorribeiro`
--
ALTER TABLE `coletorribeiro`
  MODIFY `idcoletorribeiro` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=5;

--
-- AUTO_INCREMENT de tabela `leituraribeiro`
--
ALTER TABLE `leituraribeiro`
  MODIFY `idleituraribeiro` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=6;

--
-- AUTO_INCREMENT de tabela `sensorribeiro`
--
ALTER TABLE `sensorribeiro`
  MODIFY `idsensorribeiro` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=2;

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

--
-- Limitadores para a tabela `leituraribeiro`
--
ALTER TABLE `leituraribeiro`
  ADD CONSTRAINT `leituraribeiro_ibfk_1` FOREIGN KEY (`macribeiro_idmacribeiro`) REFERENCES `macribeiro` (`idmacribeiro`) ON DELETE NO ACTION ON UPDATE NO ACTION,
  ADD CONSTRAINT `leituraribeiro_ibfk_2` FOREIGN KEY (`sensorribeiro_idsensorribeiro`) REFERENCES `sensorribeiro` (`idsensorribeiro`) ON DELETE NO ACTION ON UPDATE NO ACTION,
  ADD CONSTRAINT `leituraribeiro_ibfk_3` FOREIGN KEY (`coletorribeiro_idcoletorribeiro`) REFERENCES `coletorribeiro` (`idcoletorribeiro`) ON DELETE NO ACTION ON UPDATE NO ACTION;
COMMIT;

/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
