Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Обновленные триггером значения полей невидимы клиентом / 6 сообщений из 6, страница 1 из 1
04.06.2002, 17:09:12
    #32031748
Vladimir
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обновленные триггером значения полей невидимы клиентом
Здравствуйте!

Существует таблица из 2-х полей ID - первичный ключ (не IDENTITY) и Name - строковое.
Есть в таблице триггер instead of insert, который берет из другой таблички число и вставляет его в поле ID. Короче говоря, своя собственная реализации IDENTITY. Так вот проблема заключается в том, что после срабатывания триггера в Делфийском гриде в поле ID отображается ноль. После перечитывания таблицы все становится нормально, то есть запись в базе создается нормально. Проблема в том, как заставить сервер сообщать, что содержимое поля изменилось, тому клиенту, который эту запись вставляет? Из-за того, что неизвестно значение первичного ключа для вставленной строки, не удается ничего с этой строкой сделать.
...
Рейтинг: 0 / 0
04.06.2002, 20:20:07
    #32031761
C/\OH
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обновленные триггером значения полей невидимы клиентом
Особенность клиент-сервер типа приложения заключается в том, что сервер вообще НИЧЕГО не сообщает клиенту без запроса клиента. Так что скорее всего надо просто переписать клиента, чтобы тот после UPDATE делал обновление значений. Сервер заставить это сделать никак нельзя.

Слон
...
Рейтинг: 0 / 0
05.06.2002, 11:47:38
    #32031790
Vladimir
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обновленные триггером значения полей невидимы клиентом
Ну хорошо. А как тогда клиент узнает, что произошла вставка например? Отработало событие BeforeInsert или AfterDelete? Как-то информацию от этом клиент получает? Я так предполагаю, что это работает через механизм NOTIFICATIONS. В общем, может ли клиент определить, что сработал триггер?
...
Рейтинг: 0 / 0
05.06.2002, 12:04:29
    #32031793
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обновленные триггером значения полей невидимы клиентом
Какой механизм реализован именно в Delphy, сказать не могу.

Общая идея:

Как правило, если триггер не срабатавает, то предусматирвается сообщение об ошибке RAISERROR("Ошибка триггера",16,10) с откатом всех внесенных изменений (ROLLBACK TRANSACTION)

Генерация подобной ошибке отлавливается (автоматически) клиентской частью с соответсвующей реакцией.

Поищи, обязательно должен быть обработчик ошибок. В данном случае, если не сработает триггер, то просто не произойдет создание новой записи.
...
Рейтинг: 0 / 0
05.06.2002, 23:37:29
    #32031874
C/\OH
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обновленные триггером значения полей невидимы клиентом
Наверное можно просто делать refresh таблицы, но я не уверен. Все зависит от того, насколько много записей возвращается.
...
Рейтинг: 0 / 0
06.06.2002, 13:54:35
    #32031925
Vladimir
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обновленные триггером значения полей невидимы клиентом
В этом случае Refresh не помогает. Только ReQuery. А ReQuery это труба в данном случае. Мы нашли другой выход. Если поле ID объявить как IDENTITY и разрешить его перезапись в триггере, то тогда клиент получает правильное значение первичного ключа. Вопрос почему?
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Обновленные триггером значения полей невидимы клиентом / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]