CONSTRAINT-Klausel

Wichtig :  Dieser Artikel wurde maschinell übersetzt. Bitte beachten Sie den Haftungsausschluss. Die englische Version des Artikels ist als Referenz hier verfügbar: hier.

Eine Einschränkung ist mit einem Index zu vergleichen, kann jedoch auch zum Erstellen einer Beziehung zu einer anderen Tabelle verwendet werden.

Mit der CONSTRAINT-Klausel können Sie in ALTER TABLE- und CREATE TABLE-Anweisungen Einschränkungen erstellen oder löschen. CONSTRAINT-Klauseln können entweder zum Erstellen einer Einschränkung für ein einzelnes Feld oder zum Erstellen einer Einschränkung für mehrere Felder verwendet werden.

Hinweis : Microsoft Access-Datenbankmodul unterstützt nicht die Verwendung der EINSCHRÄNKUNG oder anderer Data Definition Language Anweisungen, die mit Microsoft Access - Datenbanken. Verwenden Sie stattdessen die Methoden zum Erstellen von DAO.

Syntax

Einschränkung für ein einzelnes Feld:

Name der EINSCHRÄNKUNG {PRIMÄRSCHLÜSSEL | EINDEUTIGE | NOT NULL |
VERWEISE Foreigdruckbare [(foreignfield1, foreignfield2)]
[ON UPDATE CASCADE | FESTLEGEN von NULL]
[ON DELETE CASCADE | FESTLEGEN VON NULL]}

Einschränkung für mehrere Felder:

Nameder EINSCHRÄNKUNG
{PRIMÄRSCHLÜSSEL (primary1[, primary2 [,...]]) |
EINDEUTIGE (unique1[, unique2 [,...]]) |
NICHT NULL (notnull1[, Notnull2 [,...]]) |
FREMDSCHLÜSSEL [KEINE INDEX] (Bezug1[, Bezug2 [,...]]) VERWEISE Fremdtabelle [(foreignfield1 [, foreignfield2 [,...]])]
[ON UPDATE CASCADE | FESTLEGEN von NULL]
[ON DELETE CASCADE | FESTLEGEN VON NULL]}

Die CONSTRAINT-Klausel besteht aus den folgenden Teilen:

Teil

Beschreibung

Name

Der Name der Einschränkung, die erstellt werden soll.

primär1, primär2

Die Namen der Felder, die als Primärschlüssel definiert werden sollen.

eindeutig1, eindeutig2

Die Namen der Felder, die als eindeutiger Schlüssel definiert werden sollen.

nichtNull1, nichtNull2

Der Name der Felder, die auf nicht-Null-Werte beschränkt sind.

Bezug1, Bezug2

Der Name der Fremdschlüsselfelder, die auf Felder in einer anderen Tabelle verweisen.

Fremdtabelle

Der Name der Fremdtabelle, die die in Fremdfeld angegebenen Felder enthält.

Fremdfeld1, Fremdfeld2

Die Namen der Felder in der Fremdtabelle, die durch Bezug1, Bezug2 angegeben sind. Sie können diese Klausel auslassen, wenn das Feld, auf das verwiesen wird, der Primärschlüssel der Fremdtabelle ist.


Hinweise

Die Einschränkung für ein einzelnes Feld verwenden Sie in der Felddefinitionsklausel einer ALTER TABLE- oder CREATE TABLE-Anweisung unmittelbar nach der Definition des Datentyps für das Feld.

Eine Einschränkung für mehrere Felder verwenden Sie, wenn Sie das Reserviertes Wort CONSTRAINT außerhalb einer Felddefinitionsklausel in einer ALTER TABLE- oder CREATE TABLE-Anweisung verwenden.

Mit CONSTRAINT können Sie für ein Feld einen der folgenden Einschränkungstypen festlegen:

  • Mit dem reservierten Wort UNIQUE können Sie ein Feld als eindeutigen Schlüssel definieren. Dies bedeutet, dass für zwei Datensätze in der Tabelle keine identischen Werte in diesem Feld zulässig sind. Jedes Feld bzw. alle Felder können als eindeutig festgelegt werden. Wenn eine Einschränkung für mehrere Felder als eindeutiger Schlüssel definiert wird, müssen die Werte aller Felder im Index eindeutig sein, selbst wenn zwei oder mehr Datensätze denselben Wert in nur einem der Felder aufweisen.

  • Mit den reservierten Wörtern PRIMARY KEY können Sie ein Feld oder mehrere Felder in einer Tabelle als Primärschlüssel definieren. Alle Werte des Primärschlüssels müssen eindeutig und ungleich Null sein, und pro Tabelle ist nur ein einziger Primärschlüssel zulässig.

    Hinweis : Für eine Tabelle, in der bereits ein Primärschlüssel vorhanden ist, sollten Sie keine PRIMARY KEY-Einschränkung festlegen. Andernfalls tritt ein Fehler auf.

  • Mit den reservierten Wörtern FOREIGN KEY können Sie ein Feld als Fremdschlüssel definieren. Wenn der Primärschlüssel der Fremdtabelle aus mehreren Feldern besteht, müssen Sie eine Einschränkung für mehrere Felder verwenden, in der alle Bezugsfelder, der Name der Fremdtabelle und die Namen der Felder in der Fremdtabelle, auf die verwiesen wird, in derselben Reihenfolge wie die Bezugsfelder aufgeführt sind. Wenn die Felder, auf die verwiesen wird, der Primärschlüssel der Fremdtabelle sind, müssen Sie diese Felder nicht angeben. Das Datenbankmodul verwendet diese Felder standardmäßig als Primärschlüssel der Fremdtabelle.

    Fremdschlüsseleinschränkungen definieren bestimmte Aktionen, die ausgeführt werden sollen, wenn ein entsprechender Primärschlüsselwert geändert wird:

  • Sie können Aktionen angeben, die in der Fremdschlüsseltabelle ausgeführt werden, wenn eine entsprechende Aktion für einen Fremdschlüssel in der Tabelle ausgeführt wird, für die die CONSTRAINT-Klausel definiert ist. Angenommen, die folgende Definition für die Customers-Tabelle (Kunden) liegt vor:

CREATE TABLE Customers (CustId INTEGER PRIMARY KEY, CLstNm NCHAR VARYING (50))

Angenommen, in der Orders-Tabelle (Bestellungen) ist eine Fremdschlüsselbeziehung definiert, die auf den Primärschlüssel der Customers-Tabelle (Kunden) verweist:

CREATE TABLE Orders (OrderId INTEGER PRIMARY KEY, CustId INTEGER, OrderNotes NCHAR VARYING (255), CONSTRAINT FKOrdersCustId FOREIGN KEY (CustId) REFERENCES Customers ON UPDATE CASCADE ON DELETE CASCADE

Sowohl eine ON UPDATE CASCADE- als auch eine ON DELETE CASCADE-Klausel sind für den Fremdschlüssel definiert. Die ON UPDATE CASCADE-Klausel besagt, dass beim Aktualisieren einer Kunden-ID in der Customers-Tabelle (Kunden) die Aktualisierung an die Orders-Tabelle (Bestellungen) weitergegeben wird. Jede Bestellung, die eine entsprechende Kunden-ID enthält, wird automatisch mit dem neuen Wert aktualisiert. Die ON DELETE CASCADE-Klausel besagt, dass beim Löschen eines Kunden aus der Customers-Tabelle alle Zeilen in der Orders-Tabelle, die denselben Kunden-Code enthalten, ebenfalls gelöscht werden.

Angenommen, die Orders-Tabelle (Bestellungen) enthält eine andere Definition, in der die SET NULL-Aktion anstelle der CASCADE-Aktion verwendet wird:

CREATE TABLE Orders (OrderId INTEGER PRIMARY KEY, CustId INTEGER, OrderNotes NCHAR VARYING (255), CONSTRAINT FKOrdersCustId FOREIGN KEY (CustId) REFERENCES Customers ON UPDATE SET NULL ON DELETE SET NULL

Die ON UPDATE SET NULL-Klausel besagt, dass beim Aktualisieren einer Kunden-ID in der Customers-Tabelle (Kunden) die entsprechenden Fremdschlüsselwerte in der Orders-Tabelle (Bestellungen) automatisch auf NULL festgelegt werden. Entsprechend besagt die ON DELETE SET NULL-Klausel, dass beim Löschen eines Kunden aus der Customers-Tabelle alle entsprechenden Fremdschlüssel in der Orders-Tabelle automatisch auf NULL festgelegt werden.

Um das automatische Erstellen von Indizes für Fremdschlüssel zu verhindern, kann der NO INDEX-Modifizierer verwendet werden. Diese Art der Fremdschlüsseldefinition sollte nur verwendet werden, wenn die sich ergebenden Indexwerte häufig dupliziert würden. In diesem Fall ist das Verwenden eines Indexes möglicherweise nicht so effizient wie das Ausführen eines Tabellenscans. Diese Art von Index, bei dem Zeilen in der Tabelle eingefügt und gelöscht werden, beeinträchtigt die Leistung und bietet keinerlei Vorteile.



Hinweis : Haftungsausschluss für maschinelle Übersetzungen: Dieser Artikel wurde mithilfe eines Computersystems und ohne jegliche Bearbeitung durch Personen übersetzt. Microsoft bietet solche maschinellen Übersetzungen als Hilfestellung für Benutzer ohne Englischkenntnisse an, damit Sie von den Informationen zu Produkten, Diensten und Technologien von Microsoft profitieren können. Da es sich bei diesem Artikel um eine maschinelle Übersetzung handelt, enthält er möglicherweise Fehler in Bezug auf (Fach-)Terminologie, Syntax und/oder Grammatik.

Teilen Facebook Facebook Twitter Twitter E-Mail E-Mail

War diese Information hilfreich?

Sehr gut. Noch anderes Feedback?

Was können wir verbessern?

Vielen Dank für Ihr Feedback!

×