Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL-Trigger zum Löschen des alten Datensatzes und zum Einfügen eines neuen

Das liegt höchstwahrscheinlich daran, dass Ihr Trigger gar nicht existiert. Das Problem liegt hier

create
  trigger 'copy_eform_data'

Mit den einfachen Anführungszeichen copy_eform_data ist eine Zeichenfolge.

Schauen Sie sich diesen Beitrag an: Wann werden einfache Anführungszeichen, doppelte Anführungszeichen und Backticks verwendet?

Außerdem sollten Sie sich über NEW informieren und OLD Schlüsselwörter in Triggern. Ihr Trigger passt wahrscheinlich nie zu einer Zeile.

Und hier

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

Ihnen fehlen Klammern.

Abgesehen davon habe ich ehrlich gesagt nicht wirklich über Ihre Logik nachgedacht, weil ich in Ihrer ganzen Frage keinen Sinn sehe. Warum sollten Sie doppelte Daten haben? Ich vermute aus Performance-Gründen? Lassen Sie Ihre Tabelle entsprechend indizieren und es sollte kein Problem geben. Und um die 5 neuesten Einträge Ihrer Tabelle zu erhalten, verwenden Sie einfach

FROM yourTable
ORDER BY when_was_the_entry_created_or_something DESC 
LIMIT 5

Sie können Spalten wie

haben
created timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP

zur Verwendung in Ihrem ORDER BY . Und Sie möchten wahrscheinlich einen Index für diese Spalte.