-- phpMyAdmin SQL Dump
-- version 5.2.1
-- https://www.phpmyadmin.net/
--
-- Host: 127.0.0.1
-- Tempo de geração: 12/06/2026 às 20:17
-- 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: `zzzz`
--

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

--
-- Estrutura para tabela `coletoralanc`
--

CREATE TABLE `coletoralanc` (
  `idcoletoralanc` 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;

--
-- Despejando dados para a tabela `coletoralanc`
--

INSERT INTO `coletoralanc` (`idcoletoralanc`, `nome`, `contador`, `ativo`, `limite`) VALUES
(1, 'coletor', 101, 1, 100),
(2, '333', 102, 0, 100);

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

--
-- Estrutura para tabela `leituraalanc`
--

CREATE TABLE `leituraalanc` (
  `idleituraalanc` int(10) UNSIGNED NOT NULL,
  `sensoralanc_idsensoralanc` int(10) UNSIGNED NOT NULL,
  `coletoralanc_idcoletoralanc` int(10) UNSIGNED NOT NULL,
  `macalanc_idmacalanc` varchar(17) NOT NULL,
  `dataleitura` date DEFAULT NULL,
  `horaleitura` time DEFAULT NULL,
  `valor` int(10) UNSIGNED DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

--
-- Despejando dados para a tabela `leituraalanc`
--

INSERT INTO `leituraalanc` (`idleituraalanc`, `sensoralanc_idsensoralanc`, `coletoralanc_idcoletoralanc`, `macalanc_idmacalanc`, `dataleitura`, `horaleitura`, `valor`) VALUES
(1, 1, 1, '12345678901234567', '2026-06-12', '15:26:33', 666),
(2, 1, 2, '12345678901234567', '2026-06-12', '19:17:20', 4345);

--
-- Acionadores `leituraalanc`
--
DELIMITER $$
CREATE TRIGGER `tgchecagem_limite_insert` AFTER INSERT ON `leituraalanc` FOR EACH ROW BEGIN
 
    UPDATE macalanc
    SET ativo = 0
    WHERE idmacalanc = NEW.macalanc_idmacalanc
    AND contador > limite;
 

    UPDATE sensoralanc
    SET ativo = 0
    WHERE idsensoralanc = NEW.sensoralanc_idsensoralanc
    AND contador > limite;
 
    -- Verifica coletoralanc
    UPDATE coletoralanc
    SET ativo = 0
    WHERE idcoletoralanc = NEW.coletoralanc_idcoletoralanc
    AND contador > limite;
 
END
$$
DELIMITER ;
DELIMITER $$
CREATE TRIGGER `tgdelete_leitura_coletoralanc` AFTER DELETE ON `leituraalanc` FOR EACH ROW BEGIN
    UPDATE  coletoralanc
    SET     contador = contador - 1
    WHERE   idcoletoralanc = OLD.coletoralanc_idcoletoralanc;
END
$$
DELIMITER ;
DELIMITER $$
CREATE TRIGGER `tgdelete_leitura_macalanc` AFTER DELETE ON `leituraalanc` FOR EACH ROW BEGIN
    UPDATE  macalanc
    SET     contador = contador - 1
    WHERE   idmacalanc = OLD.macalanc_idmacalanc;
END
$$
DELIMITER ;
DELIMITER $$
CREATE TRIGGER `tgdelete_leitura_sensoralanc` AFTER DELETE ON `leituraalanc` FOR EACH ROW BEGIN
    UPDATE  sensoralanc
    SET     contador = contador - 1
    WHERE   idsensoralanc = OLD.sensoralanc_idsensoralanc;
END
$$
DELIMITER ;
DELIMITER $$
CREATE TRIGGER `tginsert_leitura_coletoralanc` AFTER INSERT ON `leituraalanc` FOR EACH ROW BEGIN
    UPDATE  coletoralanc
    SET     contador = contador + 1
    WHERE   idcoletoralanc = NEW.coletoralanc_idcoletoralanc;
END
$$
DELIMITER ;
DELIMITER $$
CREATE TRIGGER `tginsert_leitura_macalanc` AFTER INSERT ON `leituraalanc` FOR EACH ROW BEGIN
    UPDATE  macalanc
    SET     contador = contador + 1
    WHERE   idmacalanc = NEW.macalanc_idmacalanc;
END
$$
DELIMITER ;
DELIMITER $$
CREATE TRIGGER `tginsert_leitura_sensoralanc` AFTER INSERT ON `leituraalanc` FOR EACH ROW BEGIN
    UPDATE  sensoralanc
    SET     contador = contador + 1
    WHERE   idsensoralanc = NEW.sensoralanc_idsensoralanc;
END
$$
DELIMITER ;
DELIMITER $$
CREATE TRIGGER `tgvalidate_insert_leitura` BEFORE INSERT ON `leituraalanc` FOR EACH ROW BEGIN
 
    DECLARE macativo      BOOL DEFAULT 0;
    DECLARE sensorativo   BOOL DEFAULT 0;
    DECLARE coletorativo  BOOL DEFAULT 0;
 
    SELECT ativo INTO macativo
    FROM macalanc
    WHERE idmacalanc = NEW.macalanc_idmacalanc;
 
    SELECT ativo INTO sensorativo
    FROM sensoralanc
    WHERE idsensoralanc = NEW.sensoralanc_idsensoralanc;
 
    SELECT ativo INTO coletorativo
    FROM coletoralanc
    WHERE idcoletoralanc = NEW.coletoralanc_idcoletoralanc;
 
    IF macativo = 0 THEN
        SIGNAL SQLSTATE '45000'
        SET MESSAGE_TEXT = 'Inserção bloqueada: MAC inativo.';
    END IF;
 
    IF sensorativo = 0 THEN
        SIGNAL SQLSTATE '45000'
        SET MESSAGE_TEXT = 'Inserção bloqueada: Sensor inativo.';
    END IF;
 
    IF coletorativo = 0 THEN
        SIGNAL SQLSTATE '45000'
        SET MESSAGE_TEXT = 'Inserção bloqueada: Coletor inativo.';
    END IF;
 
END
$$
DELIMITER ;

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

--
-- Estrutura para tabela `macalanc`
--

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

--
-- Despejando dados para a tabela `macalanc`
--

INSERT INTO `macalanc` (`idmacalanc`, `nome`, `contador`, `ativo`, `limite`) VALUES
('12345678901234567', '123', 2, 1, 100);

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

--
-- Estrutura para tabela `sensoralanc`
--

CREATE TABLE `sensoralanc` (
  `idsensoralanc` 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;

--
-- Despejando dados para a tabela `sensoralanc`
--

INSERT INTO `sensoralanc` (`idsensoralanc`, `nome`, `ativo`, `limite`, `contador`, `unidade`, `sigla`) VALUES
(1, 'sensor123', 1, 100, 2, '1', 'cob');

--
-- Índices para tabelas despejadas
--

--
-- Índices de tabela `coletoralanc`
--
ALTER TABLE `coletoralanc`
  ADD PRIMARY KEY (`idcoletoralanc`);

--
-- Índices de tabela `leituraalanc`
--
ALTER TABLE `leituraalanc`
  ADD PRIMARY KEY (`idleituraalanc`),
  ADD KEY `leitura_FKIndex1` (`macalanc_idmacalanc`),
  ADD KEY `leitura_FKIndex2` (`sensoralanc_idsensoralanc`),
  ADD KEY `leitura_FKIndex3` (`coletoralanc_idcoletoralanc`);

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

--
-- Índices de tabela `sensoralanc`
--
ALTER TABLE `sensoralanc`
  ADD PRIMARY KEY (`idsensoralanc`);

--
-- AUTO_INCREMENT para tabelas despejadas
--

--
-- AUTO_INCREMENT de tabela `coletoralanc`
--
ALTER TABLE `coletoralanc`
  MODIFY `idcoletoralanc` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=3;

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

--
-- AUTO_INCREMENT de tabela `sensoralanc`
--
ALTER TABLE `sensoralanc`
  MODIFY `idsensoralanc` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=3;

--
-- Restrições para tabelas despejadas
--

--
-- Restrições para tabelas `leituraalanc`
--
ALTER TABLE `leituraalanc`
  ADD CONSTRAINT `leituraalanc_ibfk_1` FOREIGN KEY (`macalanc_idmacalanc`) REFERENCES `macalanc` (`idmacalanc`) ON DELETE NO ACTION ON UPDATE NO ACTION,
  ADD CONSTRAINT `leituraalanc_ibfk_2` FOREIGN KEY (`sensoralanc_idsensoralanc`) REFERENCES `sensoralanc` (`idsensoralanc`) ON DELETE NO ACTION ON UPDATE NO ACTION,
  ADD CONSTRAINT `leituraalanc_ibfk_3` FOREIGN KEY (`coletoralanc_idcoletoralanc`) REFERENCES `coletoralanc` (`idcoletoralanc`) 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 */;
