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

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:

  1. Wählen Sie den Schlüsseltyp aus, den Sie hinzufügen möchten.
  2. Beginnen Sie mit den allgemeinen Informationen zur Programmierschnittstelle.Fügen Sie den Schlüssel mit der ALTER TABLE-Anweisung hinzu.
    Option Beschreibung
    Hinzufügen eines Primärschlüssels Um einen Primärschlüssel zu einer vorhandenen Tabelle hinzuzufügen, verwenden Sie die PRIMARY-KEY-Klausel in einer ALTER-TABLE-Anweisung. Wenn beispielsweise die Abteilungstabelle und ihr Index XDEPT1 bereits vorhanden sind, erstellen Sie ihren Primärschlüssel, indem Sie die folgende Anweisung ausgeben:
    ALTER TABLE DSN8910.DEPT
       ADD PRIMARY KEY (DEPTNO);
    Hinzufügen eines eindeutigen Schlüssels Um einer vorhandenen Tabelle einen eindeutigen Schlüssel hinzuzufügen, verwenden Sie die UNIQUE-Klausel der ALTER TABLE-Anweisung. Wenn beispielsweise für die Tabelle "department" ein eindeutiger Index für die Spalte "DEPTNAME" definiert ist, können Sie eine eindeutige Schlüsselbeschränkung, KEY_DEPTNAME, hinzufügen, die aus der Spalte "DEPTNAME" besteht, indem Sie die folgende Anweisung ausgeben:
    ALTER TABLE DSN8910.DEPT
       ADD CONSTRAINT KEY_DEPTNAME UNIQUE 
      (DEPTNAME);
    Hinzufügen eines Fremdschlüssels Um einen Fremdschlüssel zu einer vorhandenen Tabelle hinzuzufügen, verwenden Sie die FOREIGN KEY-Klausel der ALTER TABLE-Anweisung. Der übergeordnete Schlüssel muss in der übergeordneten Tabelle vorhanden sein, bevor Sie den Fremdschlüssel hinzufügen. Wenn beispielsweise für die Abteilungstabelle ein Primärschlüssel in der Spalte DEPTNO definiert ist, können Sie eine referenzielle Einschränkung, REFKEY_DEPTNO, für die Spalte DEPTNO der Projekttabelle hinzufügen, indem Sie die folgende Anweisung ausgeben:
    ALTER TABLE DSN8910.PROJ
       ADD CONSTRAINT REFKEY_DEPTNO FOREIGN 
       KEY (DEPTNO) REFERENCES DSN8910.DEPT 
       ON DELETE RESTRICT;

    Informationen zur allgemeinen Programmierschnittstelle beenden.