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.