Deletando registro após data vencida Mysql
Eu tenho uma tabela (Item) que possui um campo(data_cadastro), e gostaria que os registros dessa tabela fossem apagados automaticamente, 7 dias após essa data de cadastro.
Confiram a tabela no site www.aikachibihistory.com
eu já pesquisei a respeito, mas ainda não consegui criar um evento para isso, se alguém puder me ajudar com um exemplo
Confiram a tabela no site www.aikachibihistory.com
eu já pesquisei a respeito, mas ainda não consegui criar um evento para isso, se alguém puder me ajudar com um exemplo
Michael Batista
Curtidas 0
Respostas
Michael Batista
24/04/2017
subindo
GOSTEI 0
Lincon Silva
24/04/2017
Michael, você já pensou em criar um Event? ele é similar ao JOB no SQl Server
Segue um exemplo que peguei na WEB.
ALTER EVENT purge_erroritem
ON SCHEDULE EVERY 1 DAY
COMMENT 'Apaga registros com mais de 7 dias!'
DO
BEGIN
{*
AQUI VOCE COLOCA SEU COMANDO DE DELETE DOS REGISTROS COM 7 DIAS
*}
END|
delimiter ;
Vale lembrar que esse comando tá configurado pra rodar diariamente, você verifica pelo comando [ ON SCHEDULE EVERY 1 DAY].
Me avisa se isso te atender Mestre.. Boa tarde e abraços.
Segue um exemplo que peguei na WEB.
ALTER EVENT purge_erroritem
ON SCHEDULE EVERY 1 DAY
COMMENT 'Apaga registros com mais de 7 dias!'
DO
BEGIN
{*
AQUI VOCE COLOCA SEU COMANDO DE DELETE DOS REGISTROS COM 7 DIAS
*}
END|
delimiter ;
Vale lembrar que esse comando tá configurado pra rodar diariamente, você verifica pelo comando [ ON SCHEDULE EVERY 1 DAY].
Me avisa se isso te atender Mestre.. Boa tarde e abraços.
GOSTEI 0
Michael Batista
24/04/2017
esse é o grande problema, o comando de delete
criar um evento é facil, mas agora pegar uma data e somar 7 dias, até hoje nunca descobri como
criar um evento é facil, mas agora pegar uma data e somar 7 dias, até hoje nunca descobri como
GOSTEI 0
Cesar Azeredo
24/04/2017
Não sei no sql server, mas no oracle existe o sysdate que retorna a data da maquina, ai seria colocar no where a clausula (sysdate-datacadatro)>7
GOSTEI 0
Michael Batista
24/04/2017
Já que pelo sql está dificil que tal pelo java?
se eu conseguir criar uma variável data_vencida que faça essa soma de 7 dias na data_cadastro, eu posso criar facilmente o evento no sql para deletar, atualmente uso o seguinte método
alguém sabe como somar essa data no java?
se eu conseguir criar uma variável data_vencida que faça essa soma de 7 dias na data_cadastro, eu posso criar facilmente o evento no sql para deletar, atualmente uso o seguinte método
try { con = getConnection(); st = con.createStatement(); PreparedStatement preparedStatement = con.prepareStatement( "insert into item (cod_id ,cod_icone, nome_item, servidor, refinacao, vendedor," + "preco, descricao, data_cadastro, data_vencimento) values(?,?,?,?,?,?,?,?,?,?)"); preparedStatement.setInt(1, item.getCod_id()); preparedStatement.setString(2, item.getCod_icone()); preparedStatement.setString(3, item.getNome_item()); preparedStatement.setString(4, item.getServidor()); preparedStatement.setString(5, item.getRefinacao()); preparedStatement.setString(6, item.getVendedor()); preparedStatement.setString(7, item.getPreco()); preparedStatement.setString(8, item.getDescricao()); preparedStatement.setDate(9, new java.sql.Date(new Date().getTime())); preparedStatement.setDate(10, new java.sql.Date(new Date().getTime())); preparedStatement.execute(); return true; }
alguém sabe como somar essa data no java?
GOSTEI 0
Lincon Silva
24/04/2017
esse é o grande problema, o comando de delete
criar um evento é facil, mas agora pegar uma data e somar 7 dias, até hoje nunca descobri como
criar um evento é facil, mas agora pegar uma data e somar 7 dias, até hoje nunca descobri como
Mestre, bom dia.
creio que esse comando te atende
where Date < DATE_SUB(CURDATE(),INTERVAL 7 DAY);
abraços
GOSTEI 0
Michael Batista
24/04/2017
Não entendi bem como usar esse comando, mas pelo que eu observei se funcionar só vai apagar e não indicar ao usuario o dia em que isso irá acontecer
vamos passo a passo
1- preciso que a variável data_ vencimento receba data_castro+7, no ato do cadastro, para que o usuário sabia o dia em que seu registro irá expirar
2- criar um evento diário com a função:
se data atual = data vencimento, apague o registro
vamos passo a passo
1- preciso que a variável data_ vencimento receba data_castro+7, no ato do cadastro, para que o usuário sabia o dia em que seu registro irá expirar
2- criar um evento diário com a função:
se data atual = data vencimento, apague o registro
GOSTEI 0
Michael Batista
24/04/2017
eu tentei algo assim no java
preparedStatement.setDate(9, new java.sql.Date(new Date().getTime()));
preparedStatement.setDate(10, new java.sql.Date(new Date().getTime()+7));
mas não deu certo, não acusou erro no console, mas gerou uma data aleatória
se funcionasse eu teria a data de vencimento registrada no banco e com ela eu poderia criar o evento
preparedStatement.setDate(9, new java.sql.Date(new Date().getTime()));
preparedStatement.setDate(10, new java.sql.Date(new Date().getTime()+7));
mas não deu certo, não acusou erro no console, mas gerou uma data aleatória
se funcionasse eu teria a data de vencimento registrada no banco e com ela eu poderia criar o evento
GOSTEI 0