Wer kann eine Domain erstellen
Die CREATE DOMAIN
-Anweisung kann ausgeführt werden durch:
-
Benutzer mit der Berechtigung
CREATE DOMAIN
Die CREATE DOMAIN
-Anweisung kann ausgeführt werden durch:
Benutzer mit der Berechtigung CREATE DOMAIN
CREATE DOMAIN
-BeispieleErstellen einer Domain, die Werte über 1.000 annehmen kann, mit einem Standardwert von 10.000.
CREATE DOMAIN CUSTNO AS
INTEGER DEFAULT 10000
CHECK (VALUE > 1000);
Erstellen einer Domain, die die Werte 'Yes' und 'No' in dem beim Erstellen der Datenbank angegebenen Standardzeichensatz annehmen kann.
CREATE DOMAIN D_BOOLEAN AS
CHAR(3) CHECK (VALUE IN ('Yes', 'No'));
Erstellen einer Domain mit dem Zeichensatz UTF8
und der Kollatierungssequenz UNICODE_CI_AI
.
CREATE DOMAIN FIRSTNAME AS
VARCHAR(30) CHARACTER SET UTF8
COLLATE UNICODE_CI_AI;
Erstellen einer Domain vom Typ DATE
, die NULL nicht akzeptiert und das aktuelle Datum als Standardwert verwendet.
CREATE DOMAIN D_DATE AS
DATE DEFAULT CURRENT_DATE
NOT NULL;
Erstellen einer Domain, die als Array aus 2 Elementen des Typs NUMERIC(18, 3)
definiert ist. Der Array-Startindex ist 1.
CREATE DOMAIN D_POINT AS
NUMERIC(18, 3) [2];
Note
|
Über einen Array-Typ definierte Domainn können nur zum Definieren von Tabellenspalten verwendet werden.Sie können keine Arraydomänen verwenden, um lokale Variablen in PSQL-Modulen zu definieren. |
Erstellen einer Domain, deren Elemente nur Ländercodes sein können, die in der Tabelle COUNTRY
definiert sind.
CREATE DOMAIN D_COUNTRYCODE AS CHAR(3)
CHECK (EXISTS(SELECT * FROM COUNTRY
WHERE COUNTRYCODE = VALUE));
Note
|
Das Beispiel wird nur gegeben, um die Möglichkeit zu zeigen, Prädikate mit Abfragen in der Domainntestbedingung zu verwenden.Es wird nicht empfohlen, diesen Domainnstil in der Praxis zu erstellen, es sei denn, die Nachschlagetabelle enthält Daten, die niemals gelöscht werden. |
ALTER DOMAIN
Die aktuellen Attribute einer Domain ändern oder umbenennen
DSQL, ESQL
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 !!
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
-KlauselTO 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 |
DROP NOT NULL
Löschen Sie die Einschränkung NOT NULL
aus der Domain.
Note
|
Eine explizite |
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. |
ALTER DOMAIN
nicht ändernWenn 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.
Die ALTER DOMAIN
-Anweisung kann ausgeführt werden durch:
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Ändern des Datentyps auf INTEGER
und Einstellen oder Ändern des Standardwerts auf 2.000:
ALTER DOMAIN CUSTNO
TYPE INTEGER
SET DEFAULT 2000;
Domainnamen ändern
ALTER DOMAIN D_BOOLEAN TO D_BOOL;
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');
Ä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');
Ändern des Datentyps, um die zulässige Zeichenanzahl zu erhöhen:
ALTER DOMAIN FIRSTNAME
TYPE VARCHAR(50) CHARACTER SET UTF8;
Hinzufügen einer NOT NULL
-Einschränkung:
ALTER DOMAIN FIRSTNAME
SET NOT NULL;
Entfernen einer NOT NULL
-Einschränkung:
ALTER DOMAIN FIRSTNAME
DROP NOT NULL;
DROP DOMAIN
Löschen einer bestehenden Domain
DSQL, ESQL
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.
Die DROP DOMAIN
-Anweisung kann ausgeführt werden durch:
Der Inhaber der Domain
Benutzer mit dem DROP ANY DOMAIN
-Privileg
DROP DOMAIN
DROP DOMAIN COUNTRYNAME;