Автоматически обновляются виды - программирование

Автоматически обновляются виды

Если я JOIN или CROSS APPLY две таблицы и создать VIEW, будет ли обновление автоматически обновляться при обновлении одной из двух таблиц или я добавляю записи к любому из них?

Появятся ли эти новые записи в VIEW?

4b9b3361

Ответ 1

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

Я думаю, что Microsoft подводит итог тому, что выглядит довольно ясно:

Вид можно рассматривать как виртуальную таблицу или сохраненный запрос.

http://msdn.microsoft.com/en-us/library/aa214068%28v=sql.80%29.aspx

Представления не кэшируются автоматически.

Когда вы SELECT из представления, база данных должна запускать запрос, сохраненный в представлении, чтобы получить набор результатов, который будет использоваться в вашем заявлении

Данные, которые вы видите "в представлении", на самом деле не хранятся в любом месте и генерируются из таблиц "на лету".

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

Ответ 2

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

Ответ 3

Да, представление представляет собой запрос SELECT для базовых таблиц/представлений. Если вы изменяете данные в базовой таблице (таблицах), и если этот диапазон включен в определение представления, вы увидите измененные данные.

Ответ 4

Да, записи будут обновляться каждый раз.

Но если вы измените определение таблицы. Не забудьте посмотреть refresh.

exec sp_refreshview @viewname

Не используйте SELECT * в определении представления, вместо этого используйте column name

Ответ 5

Просто добавив к @Curt Answer, если обновление, которое вы сделали для базовых таблиц, добавляет или удаляет данные, тогда представление автоматически обновляется с новыми данными. Если вы добавляете или удаляете столбцы, формируете основные таблицы (в основном, определение View), тогда вам нужно запустить хранимую процедуру sp_RefreshView, чтобы отобразить новую схему в вашем представлении.

Ответ 6

Phtttt для того, что это стоит 7 лет спустя, я пошел с тем, что рекомендовал Невилл Кайт 13 октября 11 в 14:07.

Несколько глупых интервью несколько минут назад спрашивали, обновляются ли данные в таблице OG, если вы обновляете представление. Я понял, да. Поэтому после собеседования я проверил это. Создан простой вид из некоторой простой таблицы. Написал простой оператор обновления для обновления значения столбца, где PKId = что угодно, затем сделал выбор в отношении таблицы View и OG, и столбец обновляется в обоих наборах результатов. Таким образом, да, вы обновите исходное содержимое таблицы после обновления представления.