Como implementar BD MySQL

MySQL

Banco de Dados

19/12/2017

Olá pessoal, blz?!
Estou com uma dificuldade de implementar um banco MySQL que possui duas tabelas: uma chamada 'entrada' (Não A_I, apenas sofre UPDATE) e uma outra que guarda os 'históricos' a cada 5 minutos. Minha aplicação envia a cada 1 min para tabela.
Tenho uma coluna chamada 'gatilho' que quando recebe o valor diferente de 0 (zero) a trigger copia tudo que está na tabela 'entrada' para a tabela 'historico' e muda o valor da tabela 'entrada' para 0 (zero) .

Confira o código a seguir:
CREATE TRIGGER insertHistorico

ON markers

FOR INSERT

AS

BEGIN

    DECLRE
        @gatilho int,
        @nome VARCHAR(60),
        @address VARCHAR(80),
        @lat FLOAT(10.6),
        @lgt FLOAT(10.6),
        @type VARCHAR(30),
        @mac VARCHAR(12),
        @evotranspiracao DECIMAL, 
        @chuvaMilimetro DECIMAL,
        @irradiacaoSolar DECIMAL,
        @temperatura DECIMAL,
        @umidade DECIMAL,
        @pressao DECIMAL,
        @velocidade DECIMAL,
        @direcao DECIMAL;
    SELECT
        @gatilho = gatilho,
        @nome = nome,
        @address = address,
        @lat = lat,
        @lgt = lgt,
        @type = type,
        @mac = mac,
        @evotranspiracao = evotranspiracao,
        @chuvaMilimetro = chuvaMilimetro,
        @irradiacaoSolar = irradiacaoSolar,
        @temperatura = temperatura,
        @umidade = umidade,
        @pressao = pressao,
        @velocidade = velocidade,
        @direcao = direcao;
    FROM
        INSERTED
    INSERT INTO tbl_historico
    (
        nome,
        address,
        lat,
        lgt,
        type,
        mac,
        evotranspiracao,
        chuvaMilimetro,
        irradiacaoSolar,
        temperatura,
        umidade,
        pressao,
        velocidade,
        direcao
    )
    VALUES
    (
        @nome,
        @address,
        @lat,
        @lgt,
        @type,
        @mac,
        @evotranspiracao,
        @chuvaMilimetro,
        @irradiacaoSolar,
        @temperatura,
        @umidade,
        @pressao,
        @velocidade,
        @direcao
    )
END


Poderiam me ajuda a resolver essa questão, por favor?


Essa dúvida foi gerada a partir de um comentário no artigo Implementando controle de estoque no MySQL com triggers e procedures
Maria Barros

Maria Barros

Curtidas 0

Respostas

Gabriel

Gabriel

19/12/2017

Bom dia,

Porque toda vez que houver uma entrada não salva direto na tabela histórico?

Se as colunas nas tabelas são correspondentes é possível fazer um INSERT com resultado de um SELECT:

INSERT INTO table2 (column1, column2, column3, ...)
SELECT column1, column2, column3, ...
FROM table1
WHERE condition;
GOSTEI 0
POSTAR