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.