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?