sql >> Database >  >> RDS >> Mysql

MySQL-trigger om oude record te verwijderen en nieuwe in te voegen

Dat komt waarschijnlijk omdat je trigger niet eens bestaat. Het probleem is hier

create
  trigger 'copy_eform_data'

Met de enkele aanhalingstekens copy_eform_data is een string.

Bekijk dit bericht eens: Wanneer enkele aanhalingstekens, dubbele aanhalingstekens en backticks gebruiken?

Lees ook meer over de NEW en OLD trefwoorden in triggers. Je trigger komt waarschijnlijk nooit overeen met een regel.

En hier

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

je mist paranthesen.

Afgezien daarvan heb ik niet echt diep nagedacht over je logica om eerlijk te zijn, omdat ik geen punt zie in je hele vraag. Waarom zou je dubbele gegevens willen hebben? Uit prestatieredenen denk ik? Laat uw tabel op de juiste manier indexeren en er zou geen probleem moeten zijn. En om de 5 laatste vermeldingen van uw tafel te krijgen, gebruikt u gewoon

FROM yourTable
ORDER BY when_was_the_entry_created_or_something DESC 
LIMIT 5

U kunt kolommen hebben zoals

created timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP

om te gebruiken in uw ORDER BY . En u wilt waarschijnlijk een index op die kolom.



  1. kolom niet null uitstelbaar

  2. SQLSTATE[42000]:Syntaxisfout of toegangsfout:1064 U heeft een fout in uw SQL-syntaxis — PHP — PDO

  3. Hoe van database wisselen in Postgres?

  4. PHP Hoe gegevens van array naar mysql op te slaan met laravel 5