Firebird Documentation IndexFirebird 2.5 SprachreferenzDatentypen und Unterdatentypen → Benutzerdefinierte Datentypen—Domains
Firebird Home Firebird Home Zurück: Datentyp-KonvertierungenFirebird Documentation IndexNach oben: Datentypen und UnterdatentypenWeiter: Allgemeine Sprachelemente

Benutzerdefinierte Datentypen—Domains

Inhaltsverzeichnis

Domain-Eigenschaften
Domain-Überschreibung
Domains erstellen und verwalten

In Firebird wurde das Konzept „benutzerdefinierter Datentypen“ in Form von Domains implementiert. Beim Erstellen einer Domain wird nicht wirklich ein neuer Datentyp generiert. Eine Domain kapselt vielmehr einen bestehenden Datentyp mit diversen Attributen und macht diese „Kaspel“ für verschiedene Anwendungsbereiche in der Datenbank verfügbar. Wenn mehrere Tabellen Spalten benötigen, die die gleichen oder nahezu gleichen Eigenschaften haben sollen, macht die Verwendung von Domains Sinn.

Die Verwendung von Domains ist nicht auf die Spaltendefinition in Tabellen oder Views begrenzt. Sie können auch als Übergabe- und Rückgabeparameter sowie Variablen in PSQL-Code verwendet werden.

Domain-Eigenschaften

Eine Domain-Definition beinhaltet benötigte sowie optionale Eigenschaften. Der Datentyp ist ein benötigtes Attribut. Optionale Eigenschaften sind:

  • ein Vorgabewert
  • erlauben oder verbieten von NULL
  • CHECK Constraints
  • Zeichensatz (für Textdatentypen und Text-BLOB-Felder)
  • Collation (für Textdatentypen)

Beispielhafte Domain-Definition: 

       CREATE DOMAIN BOOL3 AS SMALLINT
         CHECK (VALUE IS NULL OR VALUE IN (0, 1));
	

vgl. auch: Explicite Datentyp-Konvertierung für die Beschreibung der Unterschiede im Mechanismus der Datenkonvertierung, wenn Domains für die TYPE OF und TYPE OF COLUMN-Modifizierer verwendet werden.

Domain-Überschreibung

Während des Festlegens der Domain-Definitionen, ist es möglich einige geerbte Eigenschaften zu überschreiben. Tabelle 3.9 fasst die Regeln hierfür zusammen.

Tabelle 3.9. Regeln zum Überschreiben von Domain-Eigenschaften in Spaltendefinitionen

Eigenschaft Überschreiben? Hinweis
Datentyp Nein
Vorgabewert Ja
Zeichensatz Ja Dies kann auch verwendet werden, um die Vorgabewerte der Datenbank für die Spalte wiederherzustellen.
Sortiermethode Ja
CHECK-Constraints Ja Zum Hinzufügen von neuen Kriterien, können Sie die korrospondierenden CHECK-Klauseln der CREATE- und ALTER-Anweisungen auf Tabellenebene verwenden.
NOT NULL Nein Häufig ist es besser Domains nullbar in ihren Definitionen zu lassen und erst beim Erstellen der Spaltedefinition über NOT NULL zu entscheiden.


Domains erstellen und verwalten

Eine Domain wird mit der DDL-Anweisung CREATE DOMAIN erstellt.

Kurz-Syntax: 

       CREATE DOMAIN <name> [AS] <type>
       [DEFAULT {<const> | <literal> | NULL | <context_var>}]
       [NOT NULL] [CHECK (<condition>)]
       [COLLATE collation];
        

vgl. auch: CREATE DOMAIN im Abschnitt Data Definition Language (DDL).

Ändern einer Domain

Zum Ändern der Domain-Eigenschaften, nutzen Sie die Anweisung ALTER DOMAIN. Mit dieser Anweisung können Sie

  • die Domain umbenennen
  • den Datentyp ändern
  • den derzeitigen Vorgabewert ändern
  • einen neuen Vorgabewert festlegen
  • einen vorhandenen CHECK-Constraint löschen
  • einen neuen CHECK-Constraint hinzufügen

Kurz-Syntax: 

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

Wenn Sie vorhaben eine Domain zu ändern, müssen Sie die vorhandenen Abhängigkeiten berücksichtigen: wurden Tabellenspalten, Variablen, Übergabe- und/oder Rückgabeparameter mit dieser Domain in PSQL deklariert? Wenn Sie Domains voreilig ändern, ohne diese eingehend zu überprüfen, kann es passieren, dass Ihr Code anschließend nicht mehr läuft!

Wichtig

Wenn Sie Datentypen einer Domain ändern, dürfen Sie keine Konvertierungen durchführen, die zu Datenverlust führen können. Zum Beispiel sollten Sie vorab prüfen, ob das Konvertieren von VARCHAR zu INTEGER für alle Daten erfolgreich durchgeführt werden kann.

vgl. auch: ALTER DOMAIN im Abschnitt Data Definition Language (DDL).

Löschen einer Domain

Die Anweisung DROP DOMAIN löscht eine Domain aus der Datenbank, sofern diese nicht von anderen Datenbankobjekten verwendet wird.

Syntax: 

       DROP DOMAIN name
          

Wichtig

Jeder mit der Datenbank verbundene Benutzer kann eine Domain löschen.

Beispiel: 

       DROP DOMAIN Test_Domain
          

vgl. auch: DROP DOMAIN im Abschnitt Data Definition Language (DDL).

Zurück: Datentyp-KonvertierungenFirebird Documentation IndexNach oben: Datentypen und UnterdatentypenWeiter: Allgemeine Sprachelemente
Firebird Documentation IndexFirebird 2.5 SprachreferenzDatentypen und Unterdatentypen → Benutzerdefinierte Datentypen—Domains