Правила обновления результатов (визуальные инструменты для баз данных)
В большинстве случаев результирующий набор, отображенный на панели результатов, можно обновить. Однако в некоторых случаях этого сделать нельзя.
Обычно для обновления результатов конструктор запросов и представлений должен иметь достаточно сведений, чтобы однозначно идентифицировать строку в таблице. Например, если запрос включает в выходном списке первичный ключ. К тому же необходимо иметь разрешение на обновление базы данных.
Если запрос основан на представлении, его также можно будет обновить. Здесь действуют те же правила, за исключением того, что они применяются не к представлению, а к его базовым таблицам.
Примечание |
---|
Конструктор запросов и представлений не может заранее определить, можно ли обновить результирующий набор, основанный на представлении. Поэтому он отображает все представления независимо от того, можно их обновлять или нет. |
В следующей таблице собраны экземпляры, в которых возможно или невозможно обновление результатов запросов на панели результатов. В большинстве случаев возможность или невозможность обновления результатов запросов определяет используемая база данных.
Запрос |
Можно ли обновить результаты? |
---|---|
Запрос, основанный на одной таблице с первичным ключом в выходном списке |
Да (кроме перечисленного ниже). |
Запрос, основанный на таблице без уникального индекса и первичного ключа |
Зависит от запроса и базы данных. Некоторые базы данных позволяют производить обновления, если имеется достаточно сведений для однозначной идентификации записей. |
Запрос, основанный на нескольких несоединенных таблицах |
Нет. |
Запрос, основанный на данных, помеченных в базе данных, как предназначенные только для чтения. |
Нет. |
Запрос, основанный на представлении, включающее в себя одну таблицу без ограничений |
Да (кроме перечисленного ниже). |
Запрос, основанный на таблицах, соединенных связью «один к одному» |
Да (кроме перечисленного ниже). |
Запрос, основанный на таблицах, соединенных связью «один ко многим» |
Обычно. |
Запрос, основанный на трех или более таблицах со связью «многие ко многим» |
Нет. |
Запрос, основанный на таблице, для которой не предоставлено разрешение на обновление |
Может удалить, но не обновить. |
Запрос, основанный на таблице, для которой не предоставлено разрешение на удаление |
Может обновить, но не удалить. |
Статистический запрос |
Нет. |
Запрос, основанный на вложенном запросе, содержащем итоги или агрегатные функции |
Нет. |
Запрос, который содержит ключевое слово DISTINCT для исключения повторяющихся строк |
Нет. |
Запрос, предложение FROM которого содержит определяемую пользователем функцию, возвращающую таблицу и определяемую пользователем функцию, содержащую несколько выбранных инструкций |
Нет. |
Запрос, предложение FROM которого содержит встроенную определяемую пользователем функцию |
Да. |
Дополнительно в результатах запросов невозможно будет обновить указанные столбцы. В следующем списке собраны типы столбцов, которые не могут быть обновлены на панели результатов:
столбцы, основанные на выражениях;
столбцы, основанные на скалярной определяемой пользователем функции;
строки или столбцы, удаленные другим пользователем;
строки и столбцы, заблокированные другим пользователем (заблокированные строки обычно могут обновляться сразу же после разблокировки);
столбцы типа Timestamp или BLOB.
См. также
Другие ресурсы
Разделы по конструированию запросов и представлений (визуальные инструменты для баз данных)