sql >> Base de Datos >  >> RDS >> Mysql

Desencadenador de MySQL para eliminar el registro antiguo e insertar uno nuevo

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.