Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Wyzwalacz MySQL do usuwania starego rekordu i wstawiania nowego

To najprawdopodobniej dlatego, że twój wyzwalacz nawet nie istnieje. Problem jest tutaj

create
  trigger 'copy_eform_data'

Za pomocą pojedynczych cudzysłowów copy_eform_data jest ciągiem.

Zajrzyj do tego posta: Kiedy używać pojedynczych cudzysłowów, podwójnych cudzysłowów i znaków wstecznych?

Powinieneś także przeczytać o NEW i OLD słowa kluczowe w wyzwalaczach. Twój wyzwalacz prawdopodobnie nigdy nie pasuje do linii.

I tutaj

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

brakuje ci nawiasów.

Poza tym, szczerze mówiąc, nie zastanawiałem się zbyt głęboko nad twoją logiką, ponieważ nie widzę sensu w całym twoim pytaniu. Dlaczego chcesz mieć zduplikowane dane? Chyba z powodów wydajnościowych? Zaindeksuj odpowiednio tabelę i nie powinno być problemu. Aby uzyskać 5 najnowszych wpisów z Twojej tabeli, po prostu użyj

FROM yourTable
ORDER BY when_was_the_entry_created_or_something DESC 
LIMIT 5

Możesz mieć kolumny takie jak

created timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP

do wykorzystania w ORDER BY . I prawdopodobnie potrzebujesz indeksu w tej kolumnie.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL:Binarny na adres IP

  2. Bazy danych:Tworzenie dziennika działań, jak obsługiwać różne referencje?

  3. Klucze podstawowe MySQL

  4. Jak efektywnie korzystać z indeksu w zapytaniu mysql

  5. Wydajność MySQL — wolne zapytania i innodb_buffer_pool_size