FirebirdSQL logo

ALTER DOMAIN

Verwendet für

Die aktuellen Attribute einer Domain ändern oder umbenennen

Verfügbar in

DSQL, ESQL

Syntax
ALTER DOMAIN domain_name
  [TO new_name]
  [TYPE <datatype>]
  [{SET DEFAULT {<literal> | NULL | <context_var>} | DROP DEFAULT}]
  [{SET | DROP} NOT NULL]
  [{ADD [CONSTRAINT] CHECK (<dom_condition>) | DROP CONSTRAINT}]

<datatype> ::=
   <scalar_datatype> | <blob_datatype>

<scalar_datatype> ::=
  !! Vgl. Syntax für Skalardatentypen !!

<blob_datatype> ::=
  !! Vgl. Syntax für BLOB-Datentypen !!

!! Siehe auch CREATE DOMAIN-Syntax !!
Table 1. ALTER DOMAIN-Anweisungsparameter
Parameter Beschreibung

new_name

Neuer Name für Domäne.Die maximale Länge beträgt 63 Zeichen

literal

Ein Literalwert, der mit datatype kompatibel ist

context_var

Jede Kontextvariable, deren Typ mit datatype kompatibel ist

Die ALTER DOMAIN-Anweisung ermöglicht Änderungen an den aktuellen Attributen einer Domain, einschließlich ihres Namens.Sie können beliebig viele Domain-Änderungen in einer ALTER DOMAIN-Anweisung vornehmen.

ALTER DOMAIN-Klausel

TO name

Verwenden Sie die TO-Klausel, um die Domain umzubenennen, solange keine Abhängigkeiten von der Domain bestehen, d.h.Tabellenspalten, lokale Variablen oder Prozedurargumente, die darauf verweisen.

SET DEFAULT

Mit der SET DEFAULT-Klausel können Sie einen neuen Standardwert setzen.Wenn die Domain bereits einen Standardwert hat, muss dieser nicht zuerst gelöscht werden – er wird durch den neuen ersetzt.

DROP DEFAULT

Verwenden Sie diese Klausel, um einen zuvor angegebenen Standardwert zu löschen und durch NULL zu ersetzen.

SET NOT NULL

Verwenden Sie diese Klasse, um der Domain eine NOT NULL-Einschränkung hinzuzufügen;Spalten oder Parameter dieser Domain werden daran gehindert, als NULL geschrieben zu werden, d.h. ein Wert ist erforderlich.

Note

Das Hinzufügen einer NOT NULL-Einschränkung zu einer vorhandenen Domain unterzieht alle Spalten, die diese Domain verwenden, einer vollständigen Datenvalidierung. Stellen Sie daher sicher, dass die Spalten keine Nullen enthalten, bevor Sie die Änderung vornehmen.

DROP NOT NULL

Löschen Sie die Einschränkung NOT NULL aus der Domain.

Note

Eine explizite NOT NULL-Einschränkung für eine Spalte, die von einer Domain abhängt, hat Vorrang vor der Domain.In dieser Situation wird die Änderung der Domain, um sie auf NULL zu setzen, nicht an die Spalte weitergegeben.

ADD CONSTRAINT CHECK

Verwenden Sie die ADD CONSTRAINT CHECK-Klausel, um der Domain eine CHECK-Beschränkung hinzuzufügen.Wenn die Domain bereits eine CHECK-Beschränkung hat, muss sie zuerst mit einer ALTER DOMAIN-Anweisung gelöscht werden, die eine DROP CONSTRAINT-Klausel enthält.

TYPE

Die TYPE-Klausel wird verwendet, um den Datentyp der Domain in einen anderen, kompatiblen zu ändern.Das System verbietet jede Änderung des Typs, die zu Datenverlust führen könnte.Ein Beispiel wäre, wenn die Anzahl der Zeichen im neuen Typ kleiner wäre als im bestehenden.

Important

Wenn Sie die Attribute einer Domain ändern, kann vorhandener PSQL-Code ungültig werden.Informationen zur Erkennung finden Sie im Artikel Das RDB$VALID_BLR-Feld in Anhang A.

docnext count = 6

Was kann ALTER DOMAIN nicht ändern

  • Wenn die Domain als Array deklariert wurde, ist es nicht möglich, ihren Typ oder ihre Dimensionen zu ändern;auch kann kein anderer Typ in einen Array-Typ geändert werden.

  • Es gibt keine Möglichkeit, die Standardsortierung zu ändern, ohne die Domain zu löschen und mit den gewünschten Attributen neu zu erstellen.

Wer kann eine Domain ändern

Die ALTER DOMAIN-Anweisung kann ausgeführt werden durch:

  • Administratoren

  • Der Inhaber der Domain

  • Benutzer mit der Berechtigung ALTER ANY DOMAIN

Domainnänderungen können durch Abhängigkeiten von Objekten verhindert werden, für die der Benutzer nicht über ausreichende Berechtigungen verfügt.

ALTER DOMAIN-Beispiele

  1. Ändern des Datentyps auf INTEGER und Einstellen oder Ändern des Standardwerts auf 2.000:

    ALTER DOMAIN CUSTNO
      TYPE INTEGER
      SET DEFAULT 2000;
  2. Domainnamen ändern

    ALTER DOMAIN D_BOOLEAN TO D_BOOL;
  3. Löschen des Standardwerts und Hinzufügen einer Einschränkung für die Domain:

    ALTER DOMAIN D_DATE
      DROP DEFAULT
      ADD CONSTRAINT CHECK (VALUE >= date '01.01.2000');
  4. Ändern der CHECK-Beschränkung:

    ALTER DOMAIN D_DATE
      DROP CONSTRAINT;
    
    ALTER DOMAIN D_DATE
      ADD CONSTRAINT CHECK
        (VALUE BETWEEN date '01.01.1900' AND date '31.12.2100');
  5. Ändern des Datentyps, um die zulässige Zeichenanzahl zu erhöhen:

    ALTER DOMAIN FIRSTNAME
      TYPE VARCHAR(50) CHARACTER SET UTF8;
  6. Hinzufügen einer NOT NULL-Einschränkung:

    ALTER DOMAIN FIRSTNAME
      SET NOT NULL;
  7. Entfernen einer NOT NULL-Einschränkung:

    ALTER DOMAIN FIRSTNAME
      DROP NOT NULL;

DROP DOMAIN

Verwendet für

Löschen einer bestehenden Domain

Verfügbar in

DSQL, ESQL

Syntax
DROP DOMAIN domain_name

Die DROP DOMAIN-Anweisung löscht eine in der Datenbank vorhandene Domain.Es ist nicht möglich, eine Domain zu löschen, wenn sie von Datenbanktabellenspalten referenziert oder in einem PSQL-Modul verwendet wird.Um eine verwendete Domain zu löschen, müssen alle Spalten in allen Tabellen, die auf die Domain verweisen, gelöscht und alle Verweise auf die Domain aus den PSQL-Modulen entfernt werden.

Wer kann eine Domain löschen

Die DROP DOMAIN-Anweisung kann ausgeführt werden durch:

  • Administratoren

  • Der Inhaber der Domain

  • Benutzer mit dem DROP ANY DOMAIN-Privileg

Example of DROP DOMAIN

Löschen der COUNTRYNAME-Domain
DROP DOMAIN COUNTRYNAME;