Одним из вариантов может быть использование инструкции INSERT INTO SELECT. Забрав из предложений, используя временные метки, чтобы тянуть последние строки, вы могли бы сделать что-то вроде ...
INSERT INTO t2 (
SELECT *
FROM t1
WHERE createdts > DATE_SUB(NOW(), INTERVAL 1 HOUR)
);
Это займет бы все строки, вставленных в предыдущем часе и вставить их в таблицу 2. Вы можете иметь сценарий запускает этот запрос и запускает его каждый час (или любой необходимый вам интервал).
Это значительно упростит ваш PHP-скрипт для вытягивания строк, так как вам не нужно будет перебирать любые строки. Он также избавляется от необходимости отслеживать последний идентификатор вставки.
Решение Fanis также звучит так, как будто оно может быть интересным.
В качестве примечания, запрос выбора в приведенной выше вставке может быть скорректирован только для вставки определенных полей. Если вам нужны только определенные поля, вам нужно будет указать их вставки, как так ...
INSERT INTO t2 (field1, field2) (
SELECT field1, field2
FROM t1
WHERE createdts > DATE_SUB(NOW(), INTERVAL 1 HOUR)
);
IMO, если возможно, любой слой, который вы используете для вставки, то есть услуги, обертывающие операции CRUD, должны «уведомлять» ваше приложение после вставки. Таким образом, вы не постоянно проводите опрос. – Alex
@Alex: Это два разных независимых приложения. Второе приложение читает только из базы данных. – HyderA
Я бы сказал, что триггер AFTER INSERT будет на месте, реализован на уровне MySQL и позволит скриптам опросить и очистить новые записи в другой таблице. Таким образом, даже форсирование еще одного (не автоинкрементного) id будет работать. – Wrikken