Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (Deutsch) » SQL Anywhere Server - SQL-Referenzhandbuch » Verwendung von SQL » SQL-Datentypen

 

Domänen

Domänen sind Aliasnamen für integrierte Datentypen, gegebenenfalls auch für Gesamtstellen- und Dezimalstellenwerte, und können DEFAULT-Werte und CHECK-Bedingungen enthalten. Manche Domänen, wie die Währungsdatentypen, sind in SQL Anywhere im voraus festgelegt, aber Sie können eigene hinzufügen.

Domänen, auch benutzerdefinierte Datentypen genannt, ermöglichen eine automatische Definition der Spalten in einer Datenbank für einen bestimmten Datentyp, wobei dieselben NULL- oder NOT NULL-Bedingungen, dieselben DEFAULT-Einstellungen und dieselben CHECK-Bedingungen gelten. Domänen fördern die Konsistenz in der gesamten Datenbank und können manche Typen von Fehlern verhindern.

Einfache Domänen

Domänen werden mit der Anweisung CREATE DOMAIN erstellt. Eine vollständige Beschreibung der Syntax finden Sie unter CREATE DOMAIN-Anweisung.

Die folgende Anweisung erstellt einen Datentyp namens street_address, bei dem es sich um eine 35-stellige Zeichenfolge handelt.

CREATE DOMAIN street_address CHAR( 35 );

CREATE DATATYPE kann als Alternative zu CREATE DOMAIN verwendet werden, was aber nicht empfehlenswert ist.

Für die Erstellung der Datentypen ist die Ressource-Datenbankberechtigung erforderlich. Nachdem ein Datentyp erstellt wurde, wird der Benutzer, der die CREATE DOMAIN-Anweisung ausgeführt hat, zum Eigentümer des Datentyps. Jeder Benutzer kann den Datentyp verwenden. Anders als bei anderen Datenbankobjekten wird der Name des Eigentümers nicht als Präfix für den Datentypnamen verwendet.

Der street_address-Datentyp kann auf exakt dieselbe Weise benutzt werden wie jeder andere Datentyp, wenn Spalten definiert werden. Beispiel: Die folgende Tabelle mit zwei Spalten hat die zweite Spalte als street_address:

CREATE TABLE twocol (
    id INT,
    street street_address
);

Domänen können von ihrem Eigentümer oder von einen Benutzer mit DBA-Berechtigungen gelöscht werden, indem die DROP DOMAIN-Anweisung benutzt wird:

DROP DOMAIN street_address;

Diese Anweisung kann nur ausgeführt werden, wenn der Datentyp in keiner Tabelle der Datenbank benutzt wird. Wenn Sie versuchen, eine Domäne, die verwendet wird, zu löschen, wird die Meldung "Primärschlüssel für Zeile in Tabelle 'SYSUSERTYPE' wird in anderer Tabelle referenziert" angezeigt.

Integritätsregeln und Standardwerte bei Domänen

Viele mit Spalten verbundene Attribute, wie beispielsweise das Zulassen von NULL, die Einrichtung eines DEFAULT-Werts usw., können in eine Domäne integriert werden. Jede Spalte, die mit dem Datentyp definiert wird, übernimmt automatisch die NULL-Einstellung, die CHECK-Bedingung und die DEFAULT-Werte. Damit können in der ganzen Datenbank Spalten mit ähnlichen Bedeutungen einheitlich angelegt werden.

Beispiel: Viele Primärschlüsselspalten in der SQL Anywhere-Beispieldatenbank sind Ganzzahlspalten, die ID-Nummern enthalten. Die folgende Anweisung erstellt einen Datentyp, der für solche Spalten sinnvoll verwendet werden kann:

CREATE DOMAIN id INT
NOT NULL
DEFAULT AUTOINCREMENT
CHECK( @col > 0 );

Standardmäßig gilt: Eine Spalte, die mit dem id-Datentyp erstellt wurde, lässt keine NULL-Werte zu, übernimmt als Standard einen autoinkrementierten Wert und muss eine positive Zahl enthalten. Jeder beliebige Bezeichner kann an Stelle von col in der Variablen @col verwendet werden.

Die Attribute eines Datentyps können aufgehoben werden, indem man explizit Attribute für die Spalte liefert. Eine mit dem id-Datentyp erstellte Spalte mit explizit erlaubten NULL-Werten lässt NULL zu, unabhängig von der Einstellung des id-Datentyps.

Kompatibilität
  • Benannte Integritätsregeln und Standardwerte   In SQL Anywhere werden Domänen mit einem Basis-Datentyp und optional einer NULL- oder NOT-NULL-Bedingung, einem Standardwert und einer CHECK-Bedingung erstellt. Benannte Integritätsregeln und benannte Standardwerte werden nicht unterstützt.

  • Datentypen erstellen   In SQL Anywhere können Sie die Systemprozedur sp_addtype benutzen, um eine Domäne hinzuzufügen, oder aber die Anweisung CREATE DOMAIN verwenden.