Создание представлений только для чтения в Sql Server

согласно MSDN, представления, состоящие из простых выборок, автоматически позволяют использовать инструкции insert/update/delete в таблице. Есть ли способ предотвратить это-сообщить Sql Server, что представление доступно только для чтения, и вы не можете использовать его для изменения таблицы?

2 ответов


лучший способ-удалить UPDATE/DELETE/INSERT разрешения на вид.

кроме того, вы можете создать INSTEAD OF триггер на представление, которое просто ничего не делает, чтобы обновления молча терпят неудачу или есть довольно много конструкций, которые делают вид не обновляемый. Таким образом, вы можете выбрать тот, который не изменяет семантику или эффективность, а затем нарушить его.

Edit: ниже, кажется, соответствует Билл.

CREATE VIEW Bar
AS
SELECT TOP 100 PERCENT x
FROM foo
WITH CHECK OPTION

вы можете указать UNION оператор, чтобы сделать SQL Server сбой во время ВСТАВИТЬ/ОБНОВИТЬ / УДАЛИТЬ операция, вот так:

create view SampleView
as
  select ID, value from table
  union all
  select 0, '0' where 1=0

последний запрос вообще не возвращает строк, но должен иметь такое же количество полей с теми же типами данных, что и первый запрос, чтобы использовать UNION безопасно. Смотрите эту ссылку для получения дополнительной информации: различные способы сделать таблицу только для чтения в базе данных SQL Server