Molto probabilmente perché il tuo trigger non esiste nemmeno. Il problema è qui
create
trigger 'copy_eform_data'
Con le virgolette singole copy_eform_data
è una stringa.
Dai un'occhiata a questo post: Quando utilizzare virgolette singole, virgolette doppie e backtick?
Inoltre dovresti leggere il NEW
e OLD
parole chiave nei trigger. Il tuo trigger probabilmente non corrisponde mai a una linea.
E qui
where ack_no=select max(s.ack_no) from asdb.sda_user_eform_data s
ti mancano le parentesi
A parte tutto ciò, ad essere onesto non ho pensato molto alla tua logica, perché non vedo un punto in tutta la tua domanda. Perché vorresti avere dati duplicati? Immagino per motivi di prestazioni? Fai indicizzare la tua tabella in modo appropriato e non dovrebbero esserci problemi. E per ottenere le ultime 5 voci della tua tabella usa semplicemente
FROM yourTable
ORDER BY when_was_the_entry_created_or_something DESC
LIMIT 5
Puoi avere colonne come
created timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
da utilizzare nel tuo ORDER BY
. E probabilmente vuoi un indice su quella colonna.