Hinzufügen von übergeordneten Schlüsseln und Fremdschlüsseln
Sie können Primärschlüssel, eindeutige Sekundärschlüssel und Fremdschlüssel zu einer vorhandenen Tabelle hinzufügen.
Informationen zu dieser Task
Einführende Konzepte
Wenn Sie einer vorhandenen Tabelle übergeordnete Schlüssel und Fremdschlüssel hinzufügen, müssen Sie bestimmte Einschränkungen und Auswirkungen berücksichtigen.
- Wenn Sie einen Primärschlüssel hinzufügen, muss die Tabelle bereits über einen eindeutigen Index in den Schlüsselspalten verfügen. Wenn mehrere eindeutige Indizes die Primärschlüsselspalten enthalten, wird der Index, der zuletzt für die Schlüsselspalten erstellt wurde, zum Primärindex. Aufgrund des eindeutigen Index gibt es in der Tabelle keine doppelten Werte des Schlüssels; daher müssen Sie die Gültigkeit der Daten nicht überprüfen.
- Wenn Sie einen eindeutigen Schlüssel hinzufügen, muss die Tabelle bereits einen eindeutigen Index mit einem Schlüssel haben, der mit dem eindeutigen Schlüssel identisch ist. Wenn mehrere eindeutige Indizes die Primärschlüsselspalten enthalten, wählt Db2 willkürlich einen eindeutigen Index für die Schlüsselspalten aus, um den eindeutigen Schlüssel zu erzwingen. Aufgrund des eindeutigen Index gibt es in der Tabelle keine doppelten Werte des Schlüssels; daher müssen Sie die Gültigkeit der Daten nicht überprüfen.
- Sie können nur eine FOREIGN KEY-Klausel in jeder ALTER TABLE-Anweisung verwenden. Wenn Sie einer Tabelle zwei Fremdschlüssel hinzufügen möchten, müssen Sie zwei ALTER TABLE-Anweisungen ausführen.
- Wenn Sie einen Fremdschlüssel hinzufügen, müssen der übergeordnete Schlüssel und der eindeutige Index der übergeordneten Tabelle bereits vorhanden sein. Das Hinzufügen des Fremdschlüssels erfordert die ALTER-Berechtigung für die abhängige Tabelle und entweder die ALTER- oder REFERENCES-Berechtigung für die übergeordnete Tabelle.
- Durch das Hinzufügen eines Fremdschlüssels wird eine referenzielle Beschränkungsbeziehung hergestellt. Db2 die Daten werden nicht validiert, wenn Sie den Fremdschlüssel hinzufügen. Stattdessen wird der Tabellenbereich, der die Tabelle enthält, in den Status "CHECK-pending" versetzt, wenn die Tabelle gefüllt ist (oder im Fall eines nicht segmentierten Tabellenbereichs, wenn der Tabellenbereich jemals gefüllt war), so als wäre er mit ENFORCE NO geladen worden. In diesem Fall müssen Sie das Dienstprogramm CHECK DATA ausführen, um den Status "CHECK-pending" zu löschen.
- Sie können einen Fremdschlüssel mit der Option "NOT ENFORCED" hinzufügen, um eine informative referenzielle Einschränkung zu erstellen. Diese Aktion lässt den Tabellenbereich nicht im Status "CHECK-pending" und Sie müssen "CHECK DATA" nicht ausführen.
Prozedur
So fügen Sie einer Tabelle einen Schlüssel hinzu: