2010-10-05 2 views
12

вопрос о обновляемых дб просмотров: Я читаю через некоторое MSDN документации по этому вопросу, и я наткнулся на следующее ограничение:обновляемых просмотров - SQL Server 2008

Любые модификации, включая UPDATE, INSERT, и DELETE, должны ссылаться на столбцы только из одной базовой таблицы.

Я просто хочу быть уверен, что понимаю ограничение. Я хотел бы использовать представления в нескольких моих проектах по обзору медиа. Реляционные данные распространяются по всем таблицам, но представление представляется наилучшим способом объединить данные, которые мне нужны, из нескольких таблиц (некоторые из которых связаны через внешние ключи) в централизованное местоположение. Поскольку столбцы будут поступать из разных таблиц, значит ли это, что я не могу запустить один слой INSERT или UPDATE для сохранения изменений во всех столбцах?

ответ

11

Да, это то, что это значит. Я не вижу преимущества в обновлении через представление, так как вам нужно знать, какие базовые таблицы задействованы в любом случае.

+0

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

+0

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

+2

Но это не сработает, если обновленные поля отличаются от разных таблиц. Вот почему это не полезно обновлять с точки зрения. – HLGEM

12

Вы можете использовать триггер INSTEAD OF в представлении, чтобы ваше приложение обрабатывало только представление, а не коллекцию базовых таблиц, ссылки на представление.

Вот пример: Designing INSTEAD OF Triggers