Lo más probable es que su disparador ni siquiera exista. El problema está aquí
create
trigger 'copy_eform_data'
Con las comillas simples copy_eform_data
es una cadena.
Eche un vistazo a esta publicación: ¿Cuándo usar comillas simples, comillas dobles y acentos graves?
También deberías leer sobre el NEW
y OLD
palabras clave en disparadores. Tu activador probablemente nunca coincida con una línea.
Y aquí
where ack_no=select max(s.ack_no) from asdb.sda_user_eform_data s
te faltan paréntesis.
Aparte de todo eso, para ser honesto, realmente no pensé mucho en tu lógica, porque no veo el punto en toda tu pregunta. ¿Por qué querrías tener datos duplicados? ¿Supongo que por razones de rendimiento? Tenga su tabla indexada apropiadamente y no debería haber ningún problema. Y para obtener las 5 últimas entradas de su tabla simplemente use
FROM yourTable
ORDER BY when_was_the_entry_created_or_something DESC
LIMIT 5
Puedes tener columnas como
created timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
para usar en su ORDER BY
. Y probablemente desee un índice en esa columna.