
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
04.06.2002, 17:09:12
|
|||
|---|---|---|---|
|
|||
Обновленные триггером значения полей невидимы клиентом |
|||
|
#18+
Здравствуйте! Существует таблица из 2-х полей ID - первичный ключ (не IDENTITY) и Name - строковое. Есть в таблице триггер instead of insert, который берет из другой таблички число и вставляет его в поле ID. Короче говоря, своя собственная реализации IDENTITY. Так вот проблема заключается в том, что после срабатывания триггера в Делфийском гриде в поле ID отображается ноль. После перечитывания таблицы все становится нормально, то есть запись в базе создается нормально. Проблема в том, как заставить сервер сообщать, что содержимое поля изменилось, тому клиенту, который эту запись вставляет? Из-за того, что неизвестно значение первичного ключа для вставленной строки, не удается ничего с этой строкой сделать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
04.06.2002, 20:20:07
|
|||
|---|---|---|---|
|
|||
Обновленные триггером значения полей невидимы клиентом |
|||
|
#18+
Особенность клиент-сервер типа приложения заключается в том, что сервер вообще НИЧЕГО не сообщает клиенту без запроса клиента. Так что скорее всего надо просто переписать клиента, чтобы тот после UPDATE делал обновление значений. Сервер заставить это сделать никак нельзя. Слон ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
05.06.2002, 11:47:38
|
|||
|---|---|---|---|
|
|||
Обновленные триггером значения полей невидимы клиентом |
|||
|
#18+
Ну хорошо. А как тогда клиент узнает, что произошла вставка например? Отработало событие BeforeInsert или AfterDelete? Как-то информацию от этом клиент получает? Я так предполагаю, что это работает через механизм NOTIFICATIONS. В общем, может ли клиент определить, что сработал триггер? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
05.06.2002, 12:04:29
|
|||
|---|---|---|---|
Обновленные триггером значения полей невидимы клиентом |
|||
|
#18+
Какой механизм реализован именно в Delphy, сказать не могу. Общая идея: Как правило, если триггер не срабатавает, то предусматирвается сообщение об ошибке RAISERROR("Ошибка триггера",16,10) с откатом всех внесенных изменений (ROLLBACK TRANSACTION) Генерация подобной ошибке отлавливается (автоматически) клиентской частью с соответсвующей реакцией. Поищи, обязательно должен быть обработчик ошибок. В данном случае, если не сработает триггер, то просто не произойдет создание новой записи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
05.06.2002, 23:37:29
|
|||
|---|---|---|---|
|
|||
Обновленные триггером значения полей невидимы клиентом |
|||
|
#18+
Наверное можно просто делать refresh таблицы, но я не уверен. Все зависит от того, насколько много записей возвращается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
06.06.2002, 13:54:35
|
|||
|---|---|---|---|
|
|||
Обновленные триггером значения полей невидимы клиентом |
|||
|
#18+
В этом случае Refresh не помогает. Только ReQuery. А ReQuery это труба в данном случае. Мы нашли другой выход. Если поле ID объявить как IDENTITY и разрешить его перезапись в триггере, то тогда клиент получает правильное значение первичного ключа. Вопрос почему? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=46&mobile=1&tid=1822475]: |
0ms |
get settings: |
8ms |
get forum list: |
21ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
837ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
24ms |
get tp. blocked users: |
1ms |
| others: | 201ms |
| total: | 1108ms |

| 0 / 0 |
