Обновление информации на стороне клиента

blackandwhitetux
Дата: 25.01.2013 05:33:43
Ситуация - бд mysql, самодельный клиент на c# (используется mysql connector/net).
Первый клиент добавляет запись, она вносится в бд, он в своей программе видит ее. Второй клиент заходит в программу, видит эту запись и делает в ней изменения. Вопрос - как при этом автоматически обновить информацию на стороне первого клиента? Перефразирую - какие есть альтернативные способы, кроме как по таймеру мониторить изменения в бд? Возможно в самой mysql есть нативные методы для такого, или в connectors/net есть нужный функционал? :)
DBConstructor
Дата: 25.01.2013 07:56:44
blackandwhitetux, никаких!
AlexeyVD
Дата: 25.01.2013 11:23:10
blackandwhitetux,

Можете сами написать сервис, через который все клиенты будут работать с базой. При обновлении данных одним клиентом, рассылайте сообщение об обновлении или новые данные другим. Ну или, как вы уже сказали, периодически мониторьте изменения на каждом клиенте.
miksoft
Дата: 25.01.2013 11:42:50
Еще варианты:
- Сделать централизованный сервис, работающий параллельно с MySQL. Приложение, изменившее данные, дергает сервис, тот дергает остальных клиентов.
- Сделать широковещательный сигнал (например, UDP-датаграммой), который выдает приложение, изменившее данные. Остальные ловят датаграмму, перечитывают данные.

Но механизмов, встроенных в MySQL, действительно, нет.
artas
Дата: 25.01.2013 12:08:52
blackandwhitetux,

написать свою библиотеку(функцию) на С/С++
При изменении записи в триггере вызывать Вашу функцию
Ваша функция собственно и будет отправлять данные клиенту

P.S. Проще и надежнее мониторить по таймеру
Akina
Дата: 25.01.2013 12:08:57
blackandwhitetux
как при этом автоматически обновить информацию на стороне первого клиента?
Сперва ответьте на вопрос "зачем" - только после того, как определена цель, можно начинать думать "как".
Может статься, что оно и не надо, а?
MasterZiv
Дата: 25.01.2013 12:40:23
blackandwhitetux,

На самом деле, никак, и более того, делать так очень вредно.

Если это надо, то лучшее взвалить какой-нибудь месаджинг и после вставки кидать туда сообщение. Клиентом непосредственно, субд этого сделать не сможет и не должна.
MasterZiv
Дата: 25.01.2013 12:42:43
artas

P.S. Проще и надежнее мониторить по таймеру


Проще и надежнее просто ничего не делать, сделать кнопку f5, чтобы обновляла.
DBConstructor
Дата: 25.01.2013 22:30:42
blackandwhitetux, в 1С сделали проще - если запись открыта в форме, прога ставит признак логической блокировки на изменение записи и при этом, никто не может эту запись открывать в форме, и тем более, редактировать.