Краткий ответ: Да. Но есть ограничения.
Например: (взято из http://msdn.microsoft.com/en-us/library/ms180800(v=sql.90).aspx)
Любые модификации, включая операторы UPDATE, INSERT и DELETE, должны ссылаться на столбцы только из одной базовой таблицы.
Столбцы, которые изменяются в представлении, должны напрямую ссылаться на базовые данные в столбцах таблицы. Они не могут быть получены любым другим способом, например, через:
- Агрегирующая функция (AVG, COUNT, SUM, MIN, MAX, GROUPING, STDEV, STDEVP, VAR и VARP). 2. Расчет; столбец не может быть вычислен из выражения с использованием других столбцов. Столбцы, сформированные с помощью операторов множеств (UNION, UNION ALL, CROSSJOIN, EXCEPT и INTERSECT), составляют вычисление и также не могут быть обновлены.
На изменяемые столбцы не могут влиять предложения GROUP BY, HAVING или DISTINCT.
TOP нельзя использовать в любом месте в select_statement представления, когда также указана опция WITH CHECK.
Оооочень ... Если это относительно прямолинейное insert
или update
, которое вы пытаетесь достичь, то это очень возможно - но чем сложнее запрос (и представление ), тем сложнее становится.
Я бы также предложил несколько советов против этого, если вы можете - на мой взгляд, это добавляет ненужный слой усложнения и (как человеку, который должен был разгадать другие запросы, использующие этот процесс), это настоящая боль в поддержании .