Für Fremdschlüssel, die zur Einschränkung (RESTRICT) von Vorgängen definiert wurden, die die referenzielle Integrität verletzen würden, werden zum Zeitpunkt der Ausführung einer Anweisung Prüfungen durchgeführt. Wenn Sie die Klausel CHECK ON COMMIT angeben, werden nur dann Prüfungen ausgeführt, wenn die Transaktion festgeschrieben wird.
Die Einstellung der Datenbankoption "wait_for_commit" steuert das Verhalten, wenn ein Fremdschlüssel zur Einschränkung von Vorgängen definiert wird, die die referenzielle Integrität verletzen würden. Die CHECK ON COMMIT-Klausel kann diese Option aufheben.
Wird der Standardwert "wait_for_commit" auf "Off" gesetzt, werden Vorgänge, die zu einer inkonsistenten Datenbank führen würden, für die Ausführung gesperrt. Ein DELETE-Vorgang für eine Abteilung, die Mitarbeiter enthält, wäre z.B. nicht zulässig. Die folgende Anweisung liefert einen Fehler:
DELETE FROM Departments WHERE DepartmentID = 200; |
Wenn "wait_for_commit" auf "On" gesetzt wird, bleibt die referenzielle Integrität ungeprüft, bis ein COMMIT ausgeführt wird. Wenn die Datenbank inkonsistent ist, wird das Festschreiben nicht gestattet, und es wird ein Fehler ausgegeben. In diesem Modus könnte ein Datenbankbenutzer zwar eine Abteilung löschen, die Mitarbeiter enthält, aber die Änderungen der Datenbank können erst festgeschrieben werden, wenn eine der folgenden Bedingungen erfüllt ist:
Die Mitarbeiter dieser Abteilung wurden gelöscht oder neu zugeordnet.
Die Zeile für die DepartmentID wurde wieder in die Tabelle "Departments" eingefügt.
Die Transaktion wurde zurückgesetzt, um die DELETE-Operation zu widerrufen.
Integritätsprüfungen bei INSERT
Integritätsprüfungen bei DELETE oder UPDATE
Kommentieren Sie diese Seite in DocCommentXchange. Senden Sie uns Feedback über diese Seite via E-Mail. |
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |