Запрос новых вставленных записей в таблице без поля автоинкремента - PullRequest
0 голосов
/ 10 мая 2018

Я работаю с таблицей существующей базы данных из другого приложения. Я хочу запросить вновь вставленные записи с фиксированным интервалом. Обычно в таблице с AUTO INCREMENT идентификатором я могу сохранить последний извлеченный идентификатор и использовать его в запросе, например WHERE id > :last_id. Однако эта таблица не использует AUTO INCREMENT id, а использует uuid в качестве первичного ключа. Так есть ли способ получить только новые записи?

Эта БД использует MySQL. Я не могу изменить структуру базы данных. Размер данных достаточно велик, поэтому я не думаю, что передача извлеченных uuids в запросе типа WHERE uuid NOT IN (:fetch_uuids) будет жизнеспособным решением.


Edit: Есть поле created, но, к сожалению, нет гарантии, что записи с меньшим созданным будут вставлены первыми Таким образом, существует риск пропустить записи, используя его. Данные были вставлены другим приложением, и у меня есть только разрешение на чтение в этой базе данных.

1 Ответ

0 голосов
/ 10 мая 2018

В вашем вопросе не указано, существует ли столбец, содержащий время создания записи. Если это существует, то вы можете использовать это.

Вы заявили, что не можете изменить структуру таблицы, но уверены, что не можете добавить столбцы в существующую структуру? Ваша проблема может быть решена путем добавления «вторичного» идентификатора с автоинкрементом и / или метки времени создания записи. Если вы не можете изменить существующие таблицы, не могли бы вы создать новую таблицу с этой дополнительной информацией?

Решение вашей проблемы может быть в этом ответе . Вы можете добавить дополнительный столбец в существующую таблицу или добавить идентификаторы в новую таблицу, где вы создаете идентификатор на основе TRIGGER из исходной таблицы

.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...