База данных SQL Server - Разрешить приложению редактировать записи в представлении? - PullRequest
1 голос
/ 22 июня 2010

Я сделал пользовательское представление для группы из трех таблиц. Как бы я настроил представление так, чтобы оно могло быть отредактировано приложением, использующим его как таблицу? Я использую SQL Server Studio Express.

Ответы [ 2 ]

5 голосов
/ 22 июня 2010

Представления в SQL Server могут быть обновляемыми, но есть ограничения (CREATE VIEW, раздел обновляемого просмотра) :

  • Любые модификации, включая операторы UPDATE, INSERT и DELETE, должны ссылаться на столбцы только из одной базовой таблицы.
  • Столбцы, изменяемые в представлении, должны напрямую ссылаться на базовые данные в столбцах таблицы. Столбцы не могут быть получены любым другим способом, например, с помощью следующего:
    • Агрегирующая функция: AVG, COUNT, SUM, MIN, MAX, GROUPING, STDEV, STDEVP, VAR и VARP.
    • Вычисление. Столбец не может быть вычислен из выражения, которое использует другие столбцы. Столбцы, сформированные с использованием операторов множеств UNION, UNION ALL, CROSSJOIN, EXCEPT и INTERSECT, представляют собой вычисление и также не могут быть обновлены.
  • На изменяемые столбцы не распространяются предложения GROUP BY, HAVING или DISTINCT.
  • TOP не используется нигде в select_statement представления вместе с предложением WITH CHECK OPTION.

В противном случае вам придется использовать триггеры INSTEAD OF .

2 голосов
/ 22 июня 2010

Вам потребуется создать триггеры INSTEAD OF INSERT и INSTEAD OF UPDATE в представлении, а затем написать операторы вставки и обновления в триггере для манипулирования данными в 3 базовых таблицах.См. эту статью MSDN , в которой есть простой пример.Вы найдете нужные отредактированные значения в специальной таблице INSERTED в контексте определения триггера.

...