Điều đó rất có thể là do trình kích hoạt của bạn thậm chí không tồn tại. Vấn đề là ở đây
create
trigger 'copy_eform_data'
Với các dấu ngoặc kép duy nhất copy_eform_data
là một chuỗi.
Hãy xem bài đăng này: Khi nào sử dụng dấu ngoặc kép, dấu ngoặc kép và dấu ngoặc kép?
Ngoài ra, bạn nên đọc thêm về NEW
và OLD
từ khóa trong trình kích hoạt. Trình kích hoạt của bạn có thể không bao giờ khớp với một dòng.
Và đây
where ack_no=select max(s.ack_no) from asdb.sda_user_eform_data s
bạn đang thiếu các chú thích.
Ngoài tất cả những điều đó, thành thật mà nói, tôi không thực sự suy nghĩ sâu sắc về logic của bạn, bởi vì tôi không thấy điểm nào trong toàn bộ câu hỏi của bạn. Tại sao bạn muốn có dữ liệu trùng lặp? Tôi đoán vì lý do hiệu suất? Đã lập chỉ mục bảng của bạn một cách thích hợp và sẽ không có vấn đề gì. Và để nhận 5 mục nhập mới nhất trong bảng của bạn, chỉ cần sử dụng
FROM yourTable
ORDER BY when_was_the_entry_created_or_something DESC
LIMIT 5
Bạn có thể có các cột như
created timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
để sử dụng trong ORDER BY
của bạn . Và bạn có thể muốn có một chỉ mục trên cột đó.