подскажите кто сталкивался,
как правильно сделать одностороннюю синхронизацию таблиц из базы access в mysql.
сейчас отправляю данные скриптом на php, но вот обновлять (через UPDATE) не очень хорошая идея
синхронизировать желательно в реальном времени ну или с минимальной задержкой
(OC windows 7)
Для правильного вопроса надо знать половину ответа
А чем плох вариант обновления через UPDATE? Естественно, всё должно быть в рамках одной транзакции.
У меня обычно полный перенос таблицы выглядит так:
1. Начать транзакцию
2. По всем таблицам
2a. Всем строкам таблицы выставить поле `updated` = 0
2b. Перенести строки через INSERT ON DUPLICATE KEY UPDATE с изменением `updated` = 1
2c. Удалить строки, где `updated` = 0
3. Завершить транзакцию
проблема в том что если в одной строке (таблицы access) поменяется только 1 ячейка, что делать?
пока делаю так UPDATE table SET id='$id,' title='$title'
и мне кажется что это не очень правильно при количестве строк в одной таблице более 20к
Александр: Второй вариант - считывать текущее состояние таблицы в mysql, составлять три списка изменений - добавление, вставка, удаление, применять их в транзакции. Но тогда надо гарантировать неизменность таблицы между считыванием и завершением транзакции, то есть делать блокировку на запись.
А почему собственно нельзя просто прицепить mysql таблицы прямо к акцессу? И вообще в этом случае не морочиться с синхронизацией, но сразу видеть реальные данные?