Erstellen von schreibgeschützten Ansichten in Sql Server

7

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?

    
Idan Arye 18.10.2011, 10:24
quelle

2 Antworten

12

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%     
Martin Smith 18.10.2011, 10:25
quelle
7

Sie könnten einen Operator UNION angeben, um SQL Server während der INSERT / UPDATE / DELETE -Operation wie folgt fehlzuschlagen:

%Vor%

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

    
Guillermo Gutiérrez 03.10.2012 17:19
quelle

Tags und Links