Mysql
 sql >> Database >  >> RDS >> Mysql

Trigger MySQL per eliminare il vecchio record e inserirne uno nuovo

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.