Форум программистов, компьютерный форум, киберфорум
C++ Builder: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.93/27: Рейтинг темы: голосов - 27, средняя оценка - 4.93
98 / 10 / 0
Регистрация: 21.02.2011
Сообщений: 474

Отслеживание изменений в БД

10.12.2012, 13:30. Показов 5709. Ответов 49
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть БД, к которой подключено несколько клиентов. Каждый из них имеет компоненты "DataSource", "ADOConnection" "ADOTable", "DBGrid". Тут рррраз, и в таблицу, к этому всему хозяйству привязанную добавилась строка. Как отследить это дело, чтобы его обработать? Например "DataSource" умеет обрабатывать событие "OnUpdateData". Подойдет? Как это юзать? Самый сложный вопрос: А можно ли об изменении уведомить только одного подключенного юзера?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
10.12.2012, 13:30
Ответы с готовыми решениями:

Отслеживание изменений
Здравствуйте, учу C#. Сделал таблицу. Когда нажимаю кнопку "Поместить" без введённых данных, то выдаст ошибку, меня бросает на изменение...

Отслеживание изменений
Здравствуйте, подскажите пожалуйста, как в Access можно отследить изменения и пользователя который эти изменения сделал. В Excel есть такая...

отслеживание изменений
И вновь день добрый. как отследить, изменилось ли определенное поле в jsp, непосредственно через Controller ?

49
4 / 4 / 0
Регистрация: 07.12.2012
Сообщений: 21
11.12.2012, 16:35
Студворк — интернет-сервис помощи студентам
Kabak, Все просто Почитай про TClientSocket. В инете куча примеров, например тут: http://www.codenet.ru/progr/bcb/sockets.php
1
872 / 448 / 35
Регистрация: 25.10.2011
Сообщений: 910
12.12.2012, 03:04
Цитата Сообщение от Kabak Посмотреть сообщение
Я так понял что в базе MySQL всё это через Trigпer делается.
Все зависит от конкретной задачи. В общем случае, я бы не рекомендовал использование триггеров для определения изменения данных в таблице. В любом случае нужна точка отчета (время или uid), если говорить о какой-то системе, то она хранится в таблице пользователей, если нет - то на клиентской строне.

В случае с InnoDB - все элементарно, используется запрос вроде:
SQL
1
SHOW TABLE STATUS;
И сравнивается значение поля update_time.

В случае с MyISAM, обычно используется поле типа timestamp с установленым current_timestamp при обновлении. Это позволяет отслеживать изменения данных различными способами. Пара примеров:
SQL
1
2
3
4
SELECT COUNT(*) FROM `table` WHERE `date` > VALUE;
-- результат - количество строк, дата изменений которых, больше чем value.
SELECT `date` FROM `table` ORDER BY `date` DESC LIMIT 1;
-- результат - дата последнего изменения поля в таблице.
Цитата Сообщение от Kabak Посмотреть сообщение
Да, кстати, для прочтения тех же триггеров / служебной таблицы тоже потребуется переподключиться к базе круг замкнулся
Зачем производить реконнект для получения данных из другой таблицы?
1
4 / 4 / 0
Регистрация: 07.12.2012
Сообщений: 21
12.12.2012, 10:15
Введение поле с датой обновления вещь хорошая, если не думать про время и размер базы. Например у меня даже в Оракле запрос
SQL
1
SELECT MAX(date_priem) FROM stat.dell_railn
по индексированному полю занимает почти секунду ("Запрос открыт за 1.312c [0.356c выполнение, 0.956c выборка]"). В таблице больше 13млн записей. Какой смысл увеличивать базу на 13 млн записей дат если важно знать только время последнего обновления? У меня даты хранятся для формирования обновлений пользователям.
0
 Аватар для Kabak
159 / 145 / 14
Регистрация: 03.02.2012
Сообщений: 788
Записей в блоге: 1
12.12.2012, 11:17
Зачем производить реконнект для получения данных из другой таблицы?
Когда один компьютер в локалке внёс изменения в базу, то другой комп. эти изменения не видит пока не переподключится к базе.
0
872 / 448 / 35
Регистрация: 25.10.2011
Сообщений: 910
12.12.2012, 12:47
В случае с InnoDB - все элементарно, используется запрос вроде:
Все-таки ночами спать нужно. TABLE STATUS: update_time - как раз работает для таблиц MyISAM, а с InnoDB всегда null.
Цитата Сообщение от Alex_ZS Посмотреть сообщение
Например у меня даже в Оракле запрос
Вечером отпишусь, но сразу говорю, вычисление максимального значения - не лучший шаг в сторону производительности.
Цитата Сообщение от Kabak Посмотреть сообщение
Когда один компьютер в локалке внёс изменения в базу, то другой комп. эти изменения не видит пока не переподключится к базе.
Достаточно повторить запрос.
0
 Аватар для Kabak
159 / 145 / 14
Регистрация: 03.02.2012
Сообщений: 788
Записей в блоге: 1
12.12.2012, 13:07
Программа работает с базой напрямую для скорости через компонент MyDAC. DBGrid как-то долго обновляется, если по всем записям запросы посылать.
0
98 / 10 / 0
Регистрация: 21.02.2011
Сообщений: 474
17.12.2012, 17:27  [ТС]
Вообщем так. Софтина, по таймеру (раз в секунду) спрашивает
C++
1
int kol=ADOTable2->RecordCount;
И вот, записей поприбавилось на одну.
мы ее забираем, (придумаю как ее локализовать). И юзаю...
Сойдет?
0
 Аватар для Kabak
159 / 145 / 14
Регистрация: 03.02.2012
Сообщений: 788
Записей в блоге: 1
17.12.2012, 17:32
Угу, а если изменилась запись которая уже была, а новых не добавлялось, то как ?
0
98 / 10 / 0
Регистрация: 21.02.2011
Сообщений: 474
18.12.2012, 07:58  [ТС]
Согласно логике программы, этого не произойдет... Редактирования именно этой таблицы не предусмотрено.
0
4 / 4 / 0
Регистрация: 07.12.2012
Сообщений: 21
18.12.2012, 12:09
RecordCount на больших таблицах работает медленно. Разумнее смотреть максимальное значение первичного ключа, и соответственно подгружать все записи с ключом больше того, что уже у клиента. Это, кстати, поможет избежать проблем с удалением, если оно будет.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
18.12.2012, 12:09

отслеживание изменений
вот у каждого разработчика получается есть своя копия репозитория(которую он получает спомощью git clone) так? И если я у себя создам...

Отслеживание изменений
Кто-нибудь знает как отслеживать изменения модели $scope.applyingParameters = { checkbox: '', chooseView:...

Отслеживание изменений
Добрый день. Уважаемые форумчане, подскажите где подсмотреть. Пытаюсь написать пинговалку. private bool ConnectedStatus(string _ip) ...

Отслеживание изменений БД
Добрый вечер! Подскажите, есть ли простой способ отслеживания изменений в БД? Необходимо, чтобы при открытии БД юзер выбирал своё...

Отслеживание изменений в TextBox
Здравствуйте! Подскажите пожалуйста. Стоит задача изменить в базе данных некоторые значения. Я выгружаю эти значения в текстовые...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
50
Ответ Создать тему
Новые блоги и статьи
GitHub Copilot в JetBrains: модель по умолчанию, Fix и контроль MCP
and_y87 12.10.2026
10 октября 2026 года GitHub обновил Copilot для JetBrains: добавил настройки стартовой модели, исправления из диагностики и управление автозапуском MCP. Поддержка IDE 2025. 1 прекращена — требуется. . .
День 5 из 28: Codex подсказывает следующий запрос
and_y87 12.10.2026
9 октября 2026 года OpenAI запустила бету Composer predictions — подсказок следующего сообщения в текущем диалоге Codex. Это помощь с формулировкой запроса, а не автоматическое продолжение задачи. . . .
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет! За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru