Regeln zum Aktualisieren von Ergebnissen (Visual Database Tools)
Gilt für: SQL Server
In vielen Fällen können Sie das im Ergebnisbereich angezeigte Resultset aktualisieren. Manchmal ist dies allerdings nicht möglich.
Damit Ergebnisse aktualisiert werden können, muss der Abfrage- und Sicht-Designer über genügend Informationen verfügen, um die Zeile in der Tabelle eindeutig identifizieren zu können. Ein Beispiel ist der Fall, dass die Abfrage einen Primärschlüssel in die Ausgabeliste einfügt. Außerdem müssen Sie über eine ausreichende Berechtigung zum Update der Datenbank verfügen.
Wenn die Abfrage auf einer Sicht basiert, kann sie aktualisiert werden. Dieselben Richtlinien werden angewendet, allerdings nicht nur auf die Sicht selbst, sondern auf die zugrunde liegenden Tabellen in der Sicht.
Hinweis
Der Abfrage- und Sicht-Designer kann nicht im Voraus ermitteln, ob Sie ein auf einer Sicht basierendes Resultset aktualisieren können. Daher werden alle Sichten angezeigt, obwohl Sie diese möglicherweise nicht aktualisieren können.
Die folgende Tabelle gibt eine Übersicht über die einzelnen Fälle, in denen Sie Abfrageergebnisse im Ergebnisbereich aktualisieren bzw. nicht aktualisieren können. Häufig wird durch die verwendete Datenbank bestimmt, ob die Ergebnisse einer Abfrage aktualisiert werden können.
Abfrage | Können die Ergebnisse aktualisiert werden? |
---|---|
Abfrage auf Grundlage einer Tabelle mit Primärschlüssel in der Ausgabeliste | Ja (außer wie im Folgenden aufgeführt). |
Abfrage auf Grundlage einer Tabelle ohne eindeutigen Index und Primärschlüssel | Hängt von der Abfrage und der Datenbank ab. Einige Datenbanken lassen Updates zu, wenn genügend Informationen zur eindeutigen Identifizierung von Datensätzen verfügbar sind. |
Abfrage auf Grundlage mehrerer Tabellen, die nicht verknüpft sind | Nein. |
Abfrage auf Grundlage von als schreibgeschützt markierten Daten der Datenbank | Nein. |
Abfrage auf Grundlage einer Sicht, die eine Tabelle ohne Einschränkungen umfasst | Ja (außer wie im Folgenden aufgeführt). |
Abfrage auf Grundlage von Tabellen, die über eine 1:1-Beziehung verknüpft sind | Ja (außer wie im Folgenden aufgeführt). |
Abfrage auf Grundlage von Tabellen, die über eine 1:n-Beziehung verknüpft sind | Meistens. |
Abfrage auf Grundlage von drei oder mehr Tabellen, bei denen eine m:n-Beziehung vorliegt | Nein. |
Abfrage auf Grundlage einer Tabelle, für die keine Updateberechtigung vorliegt | Kann gelöscht, aber nicht aktualisiert werden. |
Abfrage auf Grundlage einer Tabelle, für die keine Löschberechtigung vorliegt | Kann aktualisiert, aber nicht gelöscht werden. |
Aggregatabfrage | Nein. |
Abfrage auf Grundlage einer Unterabfrage, die Summen oder Aggregatfunktionen enthält | Nein. |
Abfrage, die das Schlüsselwort DISTINCT zum Ausschließen von doppelten Zeilen enthält | Nein. |
Abfrage, deren FROM-Klausel eine benutzerdefinierte Funktion enthält, die eine Tabelle zurückgibt, wobei diese Funktion mehrere SELECT-Anweisungen enthält | Nein. |
Abfrage, deren FROM-Klausel eine benutzerdefinierte Inlinefunktion enthält | Ja. |
Außerdem können Sie möglicherweise bestimmte Spalten in den Abfrageergebnissen nicht aktualisieren. Im Folgenden sind bestimmte Spaltentypen aufgeführt, die Sie im Ergebnisbereich nicht aktualisieren können.
Spalten, die auf Ausdrücken basieren
Spalten, die auf benutzerdefinierten Skalarfunktionen basieren
Zeilen oder Spalten, die von einem anderen Benutzer gelöscht wurden
Zeilen oder Spalten, die von einem anderen Benutzer gesperrt wurden (gesperrte Zeilen können i. d. R. unmittelbar nach Aufhebung der Sperre aktualisiert werden)
Timestamp- oder BLOB-Spalten
Weitere Informationen
Themen zur Vorgehensweise: Entwerfen von Abfragen und Sichten (Visual Database Tools)