Laut MSDN ermöglichen Ansichten, die aus einfachen Auswahlelementen bestehen, automatisch die Verwendung von Anweisungen zum Einfügen / Aktualisieren / Löschen in der Tabelle. Gibt es eine Möglichkeit, dies zu verhindern - Sql Server mitzuteilen, dass die Ansicht schreibgeschützt ist und Sie die Tabelle nicht ändern können?
Der beste Weg wäre, UPDATE/DELETE/INSERT
Berechtigungen für die Ansicht zu entfernen.
Abgesehen davon könnten Sie in der Ansicht einen INSTEAD OF
-Auslöser erstellen, der einfach nichts unternimmt, damit die Aktualisierungen automatisch fehlschlagen oder ein paar Konstrukte, die Aufrufe nicht aktualisierbar machen . Sie können also einen auswählen, der die Semantik oder Effizienz nicht ändert und ihn dann verletzt.
Bearbeiten: Das Folgende scheint die Rechnung zu erfüllen.
%Vor% Sie könnten einen Operator UNION
angeben, um SQL Server während der INSERT / UPDATE / DELETE -Operation wie folgt fehlzuschlagen:
Die letzte Abfrage gibt überhaupt keine Zeilen zurück, sondern muss die gleiche Anzahl von Feldern mit den gleichen Datentypen wie die erste Abfrage enthalten, um die UNION
sicher zu verwenden. Siehe diesen Link für weitere Informationen: Verschiedene Möglichkeiten, eine Tabelle nur in einer SQL Server-Datenbank lesen zu lassen
Tags und Links sql-server views