Một tùy chọn có thể là sử dụng câu lệnh INSERT INTO SELECT. Lấy từ những gợi ý sử dụng timestamps để kéo hàng mới nhất, bạn có thể làm một cái gì đó giống như ...
INSERT INTO t2 (
SELECT *
FROM t1
WHERE createdts > DATE_SUB(NOW(), INTERVAL 1 HOUR)
);
này sẽ mất tất cả các hàng chèn trong một giờ trước và chèn chúng trong bảng 2. Bạn có thể có một tập lệnh chạy truy vấn này và chạy nó mỗi giờ (hoặc bất kỳ khoảng thời gian nào bạn cần).
Điều này sẽ đơn giản hóa kịch bản PHP của bạn để kéo các hàng vì bạn không cần phải lặp qua bất kỳ hàng nào. Nó cũng được thoát khỏi việc phải theo dõi id chèn cuối cùng.
Các giải pháp Fanis purposed cũng có vẻ như nó có thể là thú vị là tốt.
Lưu ý, truy vấn chọn trong phần chèn ở trên có thể được điều chỉnh để chỉ chèn một số trường nhất định. Nếu bạn chỉ cần một số trường nhất định, bạn sẽ cần chỉ định chúng trong phần chèn như vậy ...
INSERT INTO t2 (field1, field2) (
SELECT field1, field2
FROM t1
WHERE createdts > DATE_SUB(NOW(), INTERVAL 1 HOUR)
);
Nguồn
2010-09-20 02:29:44
IMO, nếu có thể, bất kỳ lớp nào bạn sử dụng để chèn, tức là các dịch vụ bao gồm các hoạt động CRUD, phải 'thông báo' cho ứng dụng của bạn sau khi chèn. Bằng cách này bạn không thường xuyên bỏ phiếu. – Alex
@ Alex: Chúng là hai ứng dụng độc lập khác nhau. Ứng dụng thứ hai chỉ đọc từ cơ sở dữ liệu. – HyderA
Tôi muốn nói trình kích hoạt INSERT SAU sẽ là điểm trên, thực hiện ở cấp MySQL, và để cho các cuộc thăm dò kịch bản và làm sạch các mục mới trong bảng khác. Bằng cách đó, ngay cả việc buộc một id khác (không tự động) sẽ vẫn hoạt động. – Wrikken