sql >> Databasteknik >  >> RDS >> Mysql

MySQL-utlösare för att radera gammal post och infoga en ny

Det beror mest troligt på att din trigger inte ens existerar. Problemet är här

create
  trigger 'copy_eform_data'

Med de enskilda citattecken copy_eform_data är en sträng.

Ta en titt på det här inlägget: När ska man använda enkla citattecken, dubbla citattecken och backticks?

Du bör också läsa om NEW och OLD nyckelord i triggers. Din trigger matchar förmodligen aldrig en linje.

Och här

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

du saknar parenteser.

Bortsett från allt det där så hade jag inte riktigt en djup tanke på din logik om jag ska vara ärlig, för jag ser ingen poäng med hela din fråga. Varför skulle du vilja ha dubbletter av data? Av prestationsskäl antar jag? Låt din tabell indexeras på lämpligt sätt och det borde inte vara några problem. Och för att få de 5 senaste posterna i ditt bord, använd bara

FROM yourTable
ORDER BY when_was_the_entry_created_or_something DESC 
LIMIT 5

Du kan ha kolumner som

created timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP

att använda i din ORDER BY . Och du vill förmodligen ha ett index på den kolumnen.



  1. SQL-fråga för att få det första datumet, beroende på den aktuella gruppen (~kontrollpaus)

  2. Skicka hyresgäst-id via sql-serveranslutning

  3. Distribution av RAND() i MySQL

  4. Vad är databaser?