2014-09-29 3 views
0

Я создаю C# Winforms клиент, подключенный к База данных MySQL. Клиент будет доступен от нескольких пользователей и компьютеров. Мне нужно, чтобы все клиенты каким-то образом уведомлялись, когда кто-то делал изменения в содержимом базы данных, чтобы обновить его на клиенте.Как узнать с клиентской стороны, если таблица была обновлена ​​

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

Я думал о настройке таймера какого-то типа, и каждую минуту получаю все содержимое базы данных, которое пользователь просматривает в данный момент. Но это очень трудоемко и неэффективно. Еще одна мысль заключалась в проверке обновлений каждые минуты, но я не знаю, как это реализовать.

Любые предложения?

Есть ли способ получить проверку обновлений с клиентской стороны?
Есть ли другой способ выполнить это?

+0

Возможный дубликат [Как узнать, когда была обновлена ​​таблица MySQL?] (Http://stackoverflow.com/questions/307438/how-can-i-tell-when-a-mysql-table-was -last-updated) – Kami

+0

@Kami Я действительно искал и этот ответ не отображался в результатах поиска ... Я проверю его и посмотрю, работает ли он –

+0

Связанный вопрос может помочь вам определить, изменилась ли таблица, на отдельных строках не представляется возможным. – Kami

ответ

0

Что вы можете изменить таблицу, чтобы сохранить временную метку всякий раз, когда она обновляется. Например

CREATE TABLE foo (
    id INT PRIMARY KEY 
    x INT, 
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP 
        ON UPDATE CURRENT_TIMESTAMP, 
    KEY (updated_at) 
); 

Приведенный выше код магазина текущий временной метки на новую строку и изменений, которые она время отредактированной всякий раз, когда строка редактируется. Таким образом вы можете получить данные, отсортировать их (order by) в режиме descending и получить максимальную запись. Таким образом, вы получите последнюю обновленную запись в своей таблице. Если вы хотите знать всю базу данных, вам необходимо сравнить последнюю обновленную запись для каждой из ваших таблиц и получить самую последнюю.

Смежные вопросы