Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности

Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
03.05.2002, 14:07
|
|||
|---|---|---|---|
|
|||
Обновление данных на основе нескольких страниц |
|||
|
#18+
Уважаемые гуру! В результате моего запроса в клиентскую программу будет отослан набор записей, А пользователь будет видеть "как-будто таблицу" с полным перечнем характеристик людей. Связь между таблицами 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 ? Заранее благодарна, Лена. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
03.05.2002, 21:05
|
|||
|---|---|---|---|
|
|||
Обновление данных на основе нескольких страниц |
|||
|
#18+
Сразу предупреждаю, что я не Гуру, но ответить попытаюсь. ВОПРОС ТАКОЙ: нельзя ли как-то эти UPDATE одной командой, а самое главное только тех поляей которые действительно изменил пользователь. Во-первых, почему все необходимо делать ОДНОЙ командой? Чем плох вариант, который Вы предложили (с явной транзакцией, разумеется)? Ведь так понятно, что и где обновляется, код простой... Во-вторых, как Вы будете отслеживать то, что Пользователь изменил и не изменил, при условии, что возможны параллельные обновления? То есть, если Вася считал набор данных A1, A2, ..., An, при этом изменил в своей форме только значение поля A1, а Петя считал те же значения, но изменил все их на B1, B2, ..., Bn (причем успел это сделать до того, как Вася нажмет кнопку "Save"). Тут что делать - обновлять только одно поле A1 и потом показывать Васе A1, B2, ..., Bn? Так что, если Ваше приложение может работать с несколькими пользователями одновременно, то необходимо определиться с логикой его работы в подобных ситуациях сначала. Если же приложение работает только с одним Пользователем, то тут просто создать процедуру, принимающую на вход кучу параметров со сначением по умолчанию NULL, а внутри оной разбирать параметры и делать UPDATE только нужных полей. Вопрос этот уже был обсужден и примеры были - поищите... Целую ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=46&tablet=1&tid=1822866]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
53ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
26ms |
get tp. blocked users: |
1ms |
| others: | 240ms |
| total: | 360ms |

| 0 / 0 |
