Поделиться через


Синхронизация изменений, внесенных несколькими пользователями

В некоторых средах несколько пользователей могут изменять один и тот же объект одновременно. Например, пользователи могут одновременно обновлять структуру объекта в конструкторе таблиц или конструкторе схем баз данных или изменять значения в области результатов конструкторов запросов и представлений. Такие ситуации могут вызвать конфликты, которые потребуется разрешать.

Конфликты в конструкторе таблиц или схем баз данных

Например, в то время как один пользователь работает с таблицей в конструкторе таблиц, другой пользователь может попытаться удалить или переименовать данную или связанную с ней таблицу. При попытке сохранить таблицу будет выведено диалоговое окно Обнаружены изменения базы данных (конструктор базы данных) с сообщением, что с момента открытия этой таблицы база данных была обновлена.

Кроме того, в этом диалоговом окне выводится список объектов базы данных, на которые повлияет сохранение этой таблицы. На этом этапе можно выполнить одно из следующих действий:

  • Выберите Да, чтобы сохранить таблицу и внести в базу все изменения, приведенные в этом списке.

    Это действие может повлиять на таблицы, совместно использующие одни и те же объекты базы данных. Например, предположим, что выполняется редактирование столбца au_id в таблице titleauthors, в то время как другой пользователь работает с таблицей authors, которая связана с таблицей titleauthors через столбец au_id. Сохранение одной таблицы повлияет на другую. Верно и обратное: другой пользователь может задать проверочное ограничение для столбца qty в таблице sales. И удаление столбца qty с последующим сохранением таблицы sales затронет проверочное ограничение другого пользователя.

  • Нажмите кнопку Нет, чтобы отменить операцию сохранения.

    После этого можно закрыть таблицу без ее сохранения. При повторном открытии таблицы она будет соответствовать таблице в базе данных.

  • Чтобы сохранить список изменений, выберите пункт Сохранить текстовый файл.

    Список изменений, отображаемый в диалоговом окне Обнаружены изменения базы данных, можно сохранить в текстовый файл, чтобы затем проанализировать причину изменений, внесенных другими пользователями. Например, если другой пользователь изменил таблицу, которая помечена как подлежащая удалению, то можно проанализировать, следует ли удалять эту таблицу перед обновлением базы данных.

Конфликты в конструкторе запросов и представлений

При запуске запроса или возврате результатов представления данные отображаются в области результатов. С одним набором данных могут одновременно работать несколько пользователей, что способно привести к возникновению конфликтов.

Например, сотрудники по отдельности выполняют запрос, отображающий все данные в таблице titleauthors. Сотрудник изменяет имя, которое возвращает первая запись, с "Вар" на "Варвара". В этот момент запись содержит значение "Варвара", в то время как результирующий набор другого сотрудника содержит запись "Вар". После этого вами вводится "Варвара" и выполняется переход на другую строку. В результате будет отображено сообщение с запросом на разрешение конфликта.

  • Нажмите кнопку Да, чтобы сохранить внесенные вами изменения в базе данных.

    В результате этого действия изменения, внесенные другим сотрудником, будут перезаписаны.

  • Нажмите кнопку Нет, чтобы обновить свой результирующий набор данными из базы данных.

    В результате этого действия изменения, внесенные другим сотрудником, перезапишут изменения, внесенные вами.

  • Нажмите кнопку Отмена, чтобы продолжить редактирование без разрешения конфликта.

    В этом случае вы не сможете зафиксировать свои изменения.

См. также

Задачи

Практическое руководство. Создание скриптов изменения

Ссылки

Диалоговое окно "Обнаружены изменения базы данных" (Конструктор базы данных)

Другие ресурсы

Работа со скриптами