|
Как узнать об изменении таблицы БД
|
|||
---|---|---|---|
#18+
Здравствуйте. Я выполняю запрос к базе данных (MSSQL/ACCESS), получаю таблицу. Если кто-то изменил эти данные после моего запроса, я об этом не узнаю. Как приложение может об этом сразу же узнать? Вариант: каждые х-секунд обновлять запрос - как-то не очень хороший. Может есть другие способы? Например, "вконтакте" новости и остальное подгружает в реальном времени- он делает запросы каждые несколько секунд или есть другой механизм? (моя программа не веб - C# WPF) Заранее спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2013, 20:22 |
|
Как узнать об изменении таблицы БД
|
|||
---|---|---|---|
#18+
TwoRS, для MS SQL есть механизм уведомлений - см. класс SqlDependency. Не знаю есть ли что-то аналогичное для Access. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2013, 23:21 |
|
Как узнать об изменении таблицы БД
|
|||
---|---|---|---|
#18+
TwoRSВариант: каждые х-секунд обновлять запрос - как-то не очень хороший. Зато просто и работает в любой СУБД. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2013, 23:31 |
|
Как узнать об изменении таблицы БД
|
|||
---|---|---|---|
#18+
TwoRS ! А интересно, у тебя весь мир видит твой сервер, твои таблицы? И кому не лень в них записи кидает? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.03.2013, 08:14 |
|
Как узнать об изменении таблицы БД
|
|||
---|---|---|---|
#18+
Можно конечно через триггеры вести журнал логов заполнения таблиц... ... |
|||
:
Нравится:
Не нравится:
|
|||
04.03.2013, 08:22 |
|
Как узнать об изменении таблицы БД
|
|||
---|---|---|---|
#18+
МСУTwoRSВариант: каждые х-секунд обновлять запрос - как-то не очень хороший. Зато просто и работает в любой СУБД. +1. Как вариант мультикаст-юдипишку (multicast UDP не путать с просто UDP) из триггера в БД кидать, и постоянно, в отдельном тхреаде, читать данные с какого-то опреднлённого виртуального IP-адреса. Если чего-то пришло - обновлять данные. Но это не ко всем БД подходит, а только к тем, где можно использовать расширенные х-ые процелуры, или CLR. Но гораздо проще сделать, как сказано выше. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.03.2013, 10:47 |
|
Как узнать об изменении таблицы БД
|
|||
---|---|---|---|
#18+
Владимир САTwoRS ! А интересно, у тебя весь мир видит твой сервер, твои таблицы? И кому не лень в них записи кидает? Естественно там пароль будет ... |
|||
:
Нравится:
Не нравится:
|
|||
04.03.2013, 10:59 |
|
Как узнать об изменении таблицы БД
|
|||
---|---|---|---|
#18+
TwoRSВладимир САTwoRS ! А интересно, у тебя весь мир видит твой сервер, твои таблицы? И кому не лень в них записи кидает? Естественно там пароль будетТопик ближе к форуму "Microsoft SQL Server"... Ну ты сам наверное представляешь, что тебе конкретно нужно? Завести пользователей (пароли к ним), которые могли работать именно с твоей БД... Создать таблицу логирования... Ну и потом в триггерах на INSERT таблиц создавать запись в таблицу логирования с именем пользователя, который делает запись... Все вроде просто... Но потом может выяснится, что это и нахр..н никому не нужно... Да и записей может быть очень много в разные таблицы... соответсвенно в таблице лигирования появятся море записей... Ну и теперь вопрос: А оно надо? Может проблему решать по другому? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.03.2013, 11:38 |
|
Как узнать об изменении таблицы БД
|
|||
---|---|---|---|
#18+
Вообще-то и одной записи достаточно, датой-временем последнего изменения ... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2013, 11:39 |
|
Как узнать об изменении таблицы БД
|
|||
---|---|---|---|
#18+
TwoRSЕсли кто-то изменил эти данные после моего запроса, я об этом не узнаю.Еще как узнаешь. По крайней мере через ADODB. При обновлении данных в этой ситуации ADODB выдает соответствующую ошибку, которую можно обработать и принять решение: 1) отказаться от сохранения и ничего не делать, 2) перезаписать своими данными, 3) восстановить те данные, которые были изначально. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2013, 11:51 |
|
Как узнать об изменении таблицы БД
|
|||
---|---|---|---|
#18+
как варик, если приложение работает через хранимки, можно в хранмике сделать возвращаемый параметр в виде битового значения, которое выставляется по условию успешности отработки запроса, к примеру если после запроса @@ROWCOUNT не равен 0, то 1, и там уже в коде обрабатывать это значение :) ... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2013, 17:34 |
|
|
start [/forum/topic.php?fid=20&msg=38172748&tid=1404990]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
36ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
others: | 352ms |
total: | 471ms |
0 / 0 |