Atualização de uma tabela em MySql baseado em consulta de outra

0 respostas
V

Bom pessoal, bom dia!

Estou com um problema para resolver no meu TCC e preciso de ajuda… Estou utilizando banco de dados Mysql.
A ideia é atualizar os dados de uma tabela a cada minuto baseado em uma consulta em outra tabela.
Basicamente tenho a minha tabela de Cliente e a tabela de Ecard entre outras tabelas. Minha tabela de ECard possui o atributo id do cliente como chave estrangeira e possui um atributo do tipo boolean chamado “ativa”. O que preciso é atualizar o atributo “credito” da tabela cliente a cada minuto de cada cliente que estiver com um ECard “ativa = true”.

Primeiramente criei um evento que roda a execução a cada minuto porém não tive sucesso pois quando inseri mais de um dado na tabela ECard o evento falhou. Ele funciona porém com apenas um registro na tabela de ECard com o atributo “ativa = true”.

Minha tabela Cliente:

CREATE TABLE IF NOT EXISTS eBlueCard.Cliente(

id BIGINT NOT NULL AUTO_INCREMENT,

nome VARCHAR(255) NOT NULL,

cpf VARCHAR(255) NOT NULL UNIQUE,

celular VARCHAR(30) NOT NULL,

telefone VARCHAR(30) NOT NULL,

email VARCHAR(200) NOT NULL,

senha VARCHAR(200) NOT NULL,

qtdeCreditos INTEGER,

PRIMARY KEY(id)

)

ENGINE=InnoDB;

Minha tabela de ECard:

CREATE TABLE IF NOT EXISTS eBlueCard.ECard(

id BIGINT NOT NULL AUTO_INCREMENT,

horasCompradas VARCHAR(255) NOT NULL,

dataHora VARCHAR(255) NOT NULL,

horaSaida VARCHAR(255),

ativa BOOLEAN NOT NULL,

cliente_id BIGINT NOT NULL,

veiculo_id BIGINT NOT NULL,

PRIMARY KEY(id),

CONSTRAINT fk_veiculo FOREIGN KEY fk_veiculo (veiculo_id)

REFERENCES eBlueCard.Veiculo (id),

CONSTRAINT fk_cliente3 FOREIGN KEY fk_cliente3 (cliente_id)

REFERENCES eBlueCard.Cliente (id)

ON DELETE RESTRICT

ON UPDATE RESTRICT

)

ENGINE=InnoDB;

Meu evento que deveria atualizar a cada minuto o atributo “Credito” de cliente:

Eu entendi o por quê do evento não funcionar, porém não sei como posso efetuar a atualização do credito do cliente baseado nos clientes que estão com uma vaga ativa na tabela Ecard dentre outras tabelas. Pensei em criar uma procedure e chamar ela dentro desse evento e lá na procedure tentar percorrer de alguma forma o select na tabela ECard de clientes com o atributo “ativa = true” porém ainda não sei como percorrer esse select e atualizar lá nos registros da tabela cliente.

Alguém pode me ajudar?

Criado 26 de abril de 2016
Respostas 0
Participantes 1