Mysql
 sql >> Base de données >  >> RDS >> Mysql

Déclencheur MySQL pour supprimer l'ancien enregistrement et en insérer un nouveau

C'est probablement parce que votre déclencheur n'existe même pas. Le problème est là

create
  trigger 'copy_eform_data'

Avec les guillemets simples copy_eform_data est une chaîne.

Jetez un oeil à ce post : Quand utiliser des guillemets simples, des guillemets doubles et des backticks ?

Vous devriez également vous renseigner sur le NEW et OLD mots-clés dans les déclencheurs. Votre déclencheur ne correspond probablement jamais à une ligne.

Et ici

where ack_no=select max(s.ack_no) from asdb.sda_user_eform_data s

il te manque des parenthèses.

En dehors de tout cela, je n'ai pas vraiment réfléchi à votre logique pour être honnête, car je ne vois pas l'intérêt de toute votre question. Pourquoi voudriez-vous avoir des données en double ? Je suppose que pour des raisons de performances? Faites indexer votre table de manière appropriée et il ne devrait y avoir aucun problème. Et pour obtenir les 5 dernières entrées de votre tableau utilisez simplement

FROM yourTable
ORDER BY when_was_the_entry_created_or_something DESC 
LIMIT 5

Vous pouvez avoir des colonnes comme

created timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP

à utiliser dans votre ORDER BY . Et vous voulez probablement un index sur cette colonne.