Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Обновление данных на основе нескольких страниц / 2 сообщений из 2, страница 1 из 1
03.05.2002, 14:07
    #32029447
Обновление данных на основе нескольких страниц
Уважаемые гуру!

В результате моего запроса в клиентскую программу будет отослан набор записей,
А пользователь будет видеть "как-будто таблицу" с полным перечнем характеристик
людей. Связь между таблицами fio и about = 1:1

SELECT fio.surname, fio.name, about.mesto, about.type, ....
FROM fio INNER JOIN about ON fio.id = about.id

Всё замечательно. Но вот он, пользователь захотел через форму-карточку отредактировать некую запись.
Из приложения вызывается хранимая процедура SQL-сервера, которой на вход передаются значения всех
полей карточки. В этой ХП, естественно, выполняется следующее:

UPDATE fio SET surname=@surname,
name=@name
WHERE id=@id

UPDATE about SET mesto=@mesto,
type=@type
WHERE id=@id

ВОПРОС ТАКОЙ: нельзя ли как-то эти UPDATE одной командой, а самое главное только тех поляей
которые действительно изменил пользователь. Потому как я планирую потом через триггеры
выполнять (когда осоюсь) аудит - кто какое поле какой записи когда редактировал.

Кроме того, не покажете образец правильного триггера вставки записи в табл. about
при добавлении записи в табл. fio ?

Заранее благодарна, Лена.
...
Рейтинг: 0 / 0
03.05.2002, 21:05
    #32029462
bik_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обновление данных на основе нескольких страниц
Сразу предупреждаю, что я не Гуру, но ответить попытаюсь.

ВОПРОС ТАКОЙ: нельзя ли как-то эти UPDATE одной командой, а самое главное только тех поляей
которые действительно изменил пользователь.

Во-первых, почему все необходимо делать ОДНОЙ командой? Чем плох вариант, который Вы
предложили (с явной транзакцией, разумеется)? Ведь так понятно, что и где обновляется,
код простой...

Во-вторых, как Вы будете отслеживать то, что Пользователь изменил и не изменил,
при условии, что возможны параллельные обновления? То есть, если Вася считал набор
данных A1, A2, ..., An, при этом изменил в своей форме только значение поля A1, а
Петя считал те же значения, но изменил все их на B1, B2, ..., Bn (причем успел это сделать
до того, как Вася нажмет кнопку "Save"). Тут что делать - обновлять только одно
поле A1 и потом показывать Васе A1, B2, ..., Bn? Так что, если Ваше приложение может
работать с несколькими пользователями одновременно, то необходимо определиться с логикой
его работы в подобных ситуациях сначала.

Если же приложение работает только с одним Пользователем, то тут просто создать процедуру,
принимающую на вход кучу параметров со сначением по умолчанию NULL, а внутри оной разбирать
параметры и делать UPDATE только нужных полей. Вопрос этот уже был обсужден и примеры были
- поищите...

Целую
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Обновление данных на основе нескольких страниц / 2 сообщений из 2, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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