Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Gatilho MySQL para excluir registro antigo e inserir novo


Isso é mais provável porque seu gatilho nem existe. O problema está aqui
create
  trigger 'copy_eform_data'

Com aspas simples copy_eform_data é uma corda.

Dê uma olhada nesta postagem: Quando usar aspas simples, aspas duplas e acentos graves?

Além disso, você deve ler sobre o NEW e OLD palavras-chave em gatilhos. Seu gatilho provavelmente nunca corresponde a uma linha.

E aqui
where ack_no=select max(s.ack_no) from asdb.sda_user_eform_data s

você está perdendo parênteses.

Além de tudo isso, eu realmente não pensei muito sobre sua lógica para ser honesto, porque não vejo sentido em toda a sua pergunta. Por que você quer ter dados duplicados? Eu acho que por razões de desempenho? Tenha sua tabela indexada apropriadamente e não deve haver nenhum problema. E para obter as 5 últimas entradas da sua tabela basta usar
FROM yourTable
ORDER BY when_was_the_entry_created_or_something DESC 
LIMIT 5

Você pode ter colunas como
created timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP

para usar em seu ORDER BY . E você provavelmente quer um índice nessa coluna.