Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
События при обновлении данных
|
|||
|---|---|---|---|
|
#18+
Хотелось бы узнать как клиент подключенный к базе может получить сообщение об изменениях в данных. Вроде бы как-то это можно сделать через ADO. Или есть другой способ? Кто знает подскажите пожалуйста! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2001, 18:32 |
|
||
|
События при обновлении данных
|
|||
|---|---|---|---|
|
#18+
В компонентах ADO используется тривиальная проверка @@Identity таблицы, с которой работает пользователь. Если @@Identity изменился с момента последнего обращения к таблице, значит кто-то другой успел попытаться добавить запись. Эта проверка слишком малоинформативна, и зачастую ADO-шный упрошенный метод приводит к совершенно ни к селу ни к городу выскакивающим предупреждениям о том, что ВОЗМОЖНО данные изменены другим пользователем в то время, как на самом деле другой пользователь шевелил записи, которые тебя не интересуют. В то же время есть вероятность, что другой пользователь сказал Update или Delete, а данная система "диагностики" пропустит это событие мимо ушей, хотя данные модифицировались как раз те, которые высвечены у тебя на экране. Для того, чтобы отлавливать изменения записей другими пользователями используется специально для этого созданный тип данных Timestamp. Вот только с сообщениями будет напряженка. Не думай, что при модификации данных другим пользователем ты вдруг ни с того ни с сего получишь сообщение от SQL-сервера о том, что данные модифицированы другим пользователем. Язык запросов (T-SQL) работает так, что пока ты не пошлешь запрос, ответ не получишь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2001, 18:45 |
|
||
|
События при обновлении данных
|
|||
|---|---|---|---|
|
#18+
Проблему в подавляющем количестве случаев решают через периодической обновление. Хотя события тоже можно сделать. Есть 4 пути (как минимум): 1. В триггере raiserror со специальным номером ошибки и алерт, срабатывающий на ошибку с этим номером. 2. В триггере вызов xp, тобой написанной. Транспорт любой - полный полет фантазии. 3. В триггере вызов твоего рукописного ActiveX объекта через sp_OA..., тоже с полетом фантазии по транспорту. 4. В триггере посылка по мылу. Все требует приложения ручек. Зато ничто не ограничивает. Где-то в инете попадалось готовое решение по теме 2 с сырцами, сделанное на дельфях. Поисчи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2001, 16:56 |
|
||
|
События при обновлении данных
|
|||
|---|---|---|---|
|
#18+
А можно поподробней как средствами SQL Server послать сообщение КОНКРЕТНОМУ пользователю ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2001, 11:47 |
|
||
|
События при обновлении данных
|
|||
|---|---|---|---|
|
#18+
Послать можно используя xp_sendmail или Net SEND. Для таких целей заводятся операторы. А больше никак. Пока не спросишь, ответа не получишь. На то Query (в абревиатуре SQL) и называется "запрос". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2001, 15:29 |
|
||
|
События при обновлении данных
|
|||
|---|---|---|---|
|
#18+
Необходимо послать сообщение или ошибку конкретному пользователю по срабатыванию тригера (но не e-mail), что бы программа клиента обновила свои записи. RAISERROR посылает только тому, кто вызвал срабатывание триггера. Может можно подсунуть ей имя другого пользователя, вот только как? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2001, 15:59 |
|
||
|
|

start [/forum/topic.php?fid=46&tid=1826791]: |
0ms |
get settings: |
6ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
27ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
42ms |
get tp. blocked users: |
1ms |
| others: | 225ms |
| total: | 325ms |

| 0 / 0 |
