Обновление данных в MySQL
Пишу распределённое приложение на Delphi 7; СУБД - MySQL (таблицы - InnoDB); для доступа к MySQL использую DirectMySQL.
Проблема такая:
Запускаю процедуру, которая отображает в таблице на форме записи некоторой таблицы MySQL. По нажатию на кнопку я отправляю несколько запросов "INSERT". После этого я опять запускаю выше указанную процедуру, которая должна показать все записи, в том числе и, только что добавленные.
Но этого не происходит, точнее - процедура выводит старые записи, а добавленные - нет...:(
Никаких транзакций я не использую, так что не может быть, что "показывающая" транзакция не видит изменения, внесенные "записывающей" транзакцией.
Что делать?
Я так думаю, надо какую-то процедурку MySQL'я запустить...типа Commit, что ли???
Есть там такая???
Пока Вы работаете с формой, все внесенные изменения хранятся во внутреннем кэше. Чтобы их применить, используйте метод ApllyUpdates (для ClientDataSet и подобных компонентов).
Цитата: Hrew
Пока Вы работаете с формой, все внесенные изменения хранятся во внутреннем кэше. Чтобы их применить, используйте метод ApllyUpdates (для ClientDataSet и подобных компонентов).
Так в том-то и дело, что я не использую "подобных" компонент!
DirectMySQL мне просто позволяет отправлять sql-запросы.
Как мне "ApllyUpdates" реализовать на sql???
На SQL - никак. Ни язык SQL, ни MySQL за подтверждение изменений не отвечают (кроме разве что транзакций). Если изменения не проявляются в БД, значит они остаются на стороне клиента. С DirectMySQL помочь Вам не смогу. Могу только сказать, что если такая проблема возникает у меня, то обычно она разрешается как раз методами applyupdates, post, commit, применяемыми к клиентским компонентам.
Всё заработало - косяк в моём клиенте был - просто тупанул, неправильно отображались записи в таблице)))