Обновление при помощи наборов данных и сохраняемых процедур

если вы запустите для базы

Не удивительно, что для разговора об обновлениях при помощи сохраняемых процедур нам потребуются какие-то сохраняемые процедуры, производящие обновления. Если вы запустите для базы данных Northwind скрипт из листинга Г. 7, то получите простые сохраняемые процедуры SELECT, UPDATE, INSERT и DELETE, работающие с таблицей Region, которые подойдут для работы с любым набором данных, содержащим данные из таблицы Region. Чтобы ничего здесь не усложнять и сосредоточить внимание на вызове сохраняемых процедур для обновления, эти процедуры не имеют никакой конкурентной защиты. Как уже упоминалось при обсуждении построителей команд, запросы, требуемые для проверки оптимистической конкуренции по каждому из столбцов в строке, становятся запутанными и очень неэффективны. Лучшим способом будет использование столбца для отметки времени или версии строки, либо столбца, который обновляется значениями даты и времени всякий раз, когда строка изменяется. Вы можете затем использовать его для обнаружения нарушений конкуренции, и тогда вам потребуется проверять единственный столбец и переносить единственный дополнительный параметр, чтобы узнать, не обновил ли кто-нибудь строку с тех пор, как она была извлечена.

Заметьте, что в данном случае столбец RegionID не является автоматически нумеруемым идентификационным столбцом, поэтому вы должны передавать ID как параметр даже для вставок. Если у вас есть столбец идентификации, который будет генерироваться при выполнении вставки на стороне сервера, то вам нужно будет сделать этот столбец выходным параметром сохраняемой процедуры, а затем устанавливать этот параметр в сохраняемой процедуре значением @@IDENTITY. Тогда новое идентификационное значение будет передаваться из сохраняемой процедуры обратно и помещаться в строку, инициировавшую вставку, в таблице на стороне клиента. Имея сохраняемые процедуры, которые можно вызывать, вам нужно написать немного кода, чтобы подготовить все команды, необходимые для извлечения и обновления набора данных при помощи этих сохраняемых процедур. Следующий код показывает простой метод, который вызывает сохраняемую процедуру GetRegions Для заполнения набора данных, являющегося элементом охватывающего класса.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *