Typspezifische Details
- Array-Typen
-
-
Wenn die Domain ein Array sein soll, kann der Basistyp ein beliebiger SQL-Datentyp außer
BLOB
und Array sein. -
Die Dimensionen des Arrays sind in eckigen Klammern angegeben.(Im Syntaxblock erscheinen diese Klammern in Anführungszeichen, um sie von den eckigen Klammern zu unterscheiden, die optionale Syntaxelemente kennzeichnen.)
-
Für jede Array-Dimension definieren eine oder zwei ganze Zahlen die untere und obere Grenze ihres Indexbereichs:
-
Arrays sind standardmäßig 1-basiert.Die untere Grenze ist implizit und nur die obere Grenze muss angegeben werden.Eine einzelne Zahl kleiner als 1 definiert den Bereich num..1 und eine Zahl größer als 1 definiert den Bereich 1..num.
-
Zwei durch einen Doppelpunkt getrennte Zahlen (‘
:
’) und optionales Leerzeichen, das zweite größer als das erste, können verwendet werden, um den Bereich explizit zu definieren.Eine oder beide Grenzen können kleiner als Null sein, solange die obere Grenze größer als die untere ist.
-
-
Wenn das Array mehrere Dimensionen hat, müssen die Bereichsdefinitionen für jede Dimension durch Kommas und optionales Leerzeichen getrennt werden.
-
Indizes werden nur validiert, wenn tatsächlich ein Array existiert.Das bedeutet, dass keine Fehlermeldungen bezüglich ungültiger Indizes zurückgegeben werden, wenn die Auswahl eines bestimmten Elements nichts zurückgibt oder wenn ein Array-Feld
NULL
ist.
-
- String-Typen
-
Mit der
CHARACTER SET
-Klausel können Sie den Zeichensatz für die TypenCHAR
,VARCHAR
undBLOB
(SUB_TYPE TEXT
) angeben.Wenn der Zeichensatz nicht angegeben ist, wird der alsDEFAULT CHARACTER SET
angegebene Zeichensatz der Datenbank verwendet.Wenn kein Zeichensatz angegeben wurde, wird beim Erstellen einer Zeichendomäne standardmäßig der ZeichensatzNONE
verwendet.WarningMit dem Zeichensatz
NONE
werden Zeichendaten so gespeichert und abgerufen, wie sie übermittelt wurden.Daten in einer beliebigen Codierung können einer Spalte basierend auf einer solchen Domain hinzugefügt werden, aber es ist unmöglich, diese Daten zu einer Spalte mit einer anderen Codierung hinzuzufügen.Da keine Transliteration zwischen den Quell- und Zielcodierungen durchgeführt wird, können Fehler auftreten. DEFAULT
-Klausel-
Mit der optionalen
DEFAULT
-Klausel können Sie einen Standardwert für die Domain angeben.Dieser Wert wird der Tabellenspalte hinzugefügt, die diese Domain erbt, wenn dieINSERT
-Anweisung ausgeführt wird, wenn kein Wert dafür in der DML-Anweisung angegeben ist.Lokale Variablen und Argumente in PSQL-Modulen, die auf diese Domain verweisen, werden mit dem Standardwert initialisiert.Verwenden Sie als Standardwert ein Literal eines kompatiblen Typs oder eine Kontextvariable eines kompatiblen Typs. NOT NULL
Constraint-
Spalten und Variablen, die auf einer Domain mit der Einschränkung
NOT NULL
basieren, werden daran gehindert, alsNULL
geschrieben zu werden, d.h. ein Wert ist erforderlich.CautionAchten Sie beim Anlegen einer Domain darauf, keine Einschränkungen anzugeben, die sich widersprechen würden.Zum Beispiel sind
NOT NULL
undDEFAULT NULL
widersprüchlich. CHECK
Constraint(s)-
Die optionale
CHECK
-Klausel gibt Einschränkungen für die Domain an.Eine Domainneinschränkung gibt Bedingungen an, die von den Werten von Tabellenspalten oder Variablen erfüllt werden müssen, die von der Domain erben.Eine Bedingung muss in Klammern eingeschlossen werden.Eine Bedingung ist ein logischer Ausdruck (auch Prädikat genannt), der die booleschen ErgebnisseTRUE
,FALSE
undUNKNOWN
zurückgeben kann.Eine Bedingung gilt als erfüllt, wenn das Prädikat den WertTRUE
oder „unknown value
“ (entsprichtNULL
) zurückgibt. Liefert das PrädikatFALSE
, ist die Annahmebedingung nicht erfüllt. VALUE
Keyword-
Das Schlüsselwort
VALUE
in einer Domainneinschränkung ersetzt die Tabellenspalte, die auf dieser Domain basiert, oder eine Variable in einem PSQL-Modul.Es enthält den Wert, der der Variablen oder der Tabellenspalte zugewiesen wurde.VALUE
kann überall in derCHECK
-Bedingung verwendet werden, obwohl es normalerweise im linken Teil der Bedingung verwendet wird. COLLATE
-
Mit der optionalen
COLLATE
-Klausel können Sie die Kollatierungssequenz angeben, wenn die Domain auf einem der String-Datentypen basiert, einschließlichBLOB
s mit Textuntertypen.Wenn keine Kollatierungssequenz angegeben ist, ist die Kollatierungssequenz diejenige, die zum Zeitpunkt der Erstellung der Domain für den angegebenen Zeichensatz voreingestellt ist.