Создание представлений только для чтения в 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