Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

Spaltendefinition

Die Spaltendefinition legt bei der Erzeugung oder Änderung einer Basistabelle (CREATE TABLE, ALTER TABLE) den Namen und die Eigenschaften einer Spalte fest.

SESAM/SQL unterscheidet zwischen einfachen und multiplen Spalten. Bei einer einfachen Spalte kann pro Satz genau ein Wert gespeichert werden. Bei einer multiplen Spalte können pro Satz mehrere Werte desselben Datentyps gespeichert werden. Eine multiple Spalte besteht aus mehreren Spaltenelementen. In jedem Spaltenelement kann pro Satz genau ein Wert gespeichert werden.

Zur Einbindung von BLOB-Objekten in Basistabellen werden REF-Spalten benötigt. Diese werden mit der FOR REF-Klausel definiert.

Eine Basistabelle kann max. 26134 Spalten eines Datentyps außer VARCHAR und NVAR-CHAR enthalten. Sie kann max. 1000 Spalten mit Datentyp VARCHAR und/oder NVAR-CHAR enthalten. Die für CALL-DML-Tabellen geltenden Einschränkungen sind auf "Spaltendefinition" beschrieben.



spaltendefinition ::= spalte { datentyp [ voreinstellung ] | FOR REF( tabelle ) }

                       [[CONSTRAINT integritätsbedingungsname ] spaltenbedingung ] ...

                       [ call_dml_klausel ]


voreinstellung ::= DEFAULT

{



alphanumerisches_literal |
national_literal |
numerisches_literal |
zeit_literal |
CURRENT_TIME(3) |
LOCALTIME(3) |
CURRENT_TIMESTAMP(3) |
LOCALTIMESTAMP(3) |
USER |
CURRENT_USER |
SYSTEM_USER |
NULL |
REF( tabelle )

}



call_dml_klausel ::= CALL DML call_dml_voreinst [ call_dml_symb_name ]



spalte

Name der Spalte. Der Spaltenname muss innerhalb der Basistabelle eindeutig sein.


datentyp

Datentyp für die Spalte.


FOR REF(tabelle)

Definiert eine Spalte, die Referenzen auf BLOB-Werte enthält. Mit dieser Klausel lassen sich somit BLOB-Objekte in „normale“ Basistabellen einbinden. BLOB-Werte werden in BLOB-Tabellen gespeichert. Die Definition einer BLOB-Tabelle wird im Abschnitt „CREATE TABLE - Basistabelle erzeugen" beschrieben. BLOB-Objekte, -Tabellen und REF-Werte werden kurz im Abschnitt „Konzept des SESAM-CLI" erklärt. Ausführlich wird deren Aufbau im „ Basishandbuch“ beschrieben.

    • Die Spalte erhält den Datentyp CHAR(237).

    • Die Spalte erhält als Defaultwert den REF-Wert der Klasse. Die Struktur der REF-Werte wird im nächsten Abschnitt beschrieben.

    • tabelle darf den Datenbanknamen (catalog) nicht enthalten.


REF(tabelle)

REF-Wert der Klasse, der die gesamte Klasse der BLOB-Werte einer BLOB-Tabelle bezeichnet. Wird eine REF-Spalte erzeugt, so erhält die Spalte den REF-Wert der Klasse als Defaultwert. Dieser ist durch die Angabe des Namens der BLOB-Tabelle bestimmt. Deshalb ist es an dieser Stelle nicht sinnvoll und auch aufgrund der Syntax der Spaltendefinition nicht möglich, eine Voreinstellung für die REF-Spalte anzugeben.Ein REF-Wert hat grundsätzlich folgende Struktur:

ss/tt?UID=uuuu&OID=nn

    • ss ist der einfache Schemaname der BLOB-Tabelle ohne Datenbankname.

    • tt ist der einfache Tabellenname der BLOB-Tabelle ohne Schema- und Datenbankname..

    • uuu ist die eindeutige aus 32 Hexadezimalziffern bestehende Identifikationsnummer des BLOB-Objekts. Beim REF-Wert der Klasse sind alle Ziffern 0.

    • nn ist die Nummer des BLOB-Objekts in der BLOB-Tabelle. Beim REF-Wert der Klasse ist diese Nummer 0.


voreinstellung

Legt einen SQL-Defaultwert fest, der in die Spalte eingetragen wird, wenn ein Satz eingefügt oder geändert wird und für die Spalte kein Wert oder der Defaultwert angegeben ist.

Die Voreinstellung wird zu dem Zeitpunkt ausgewertet, wenn ein Satz eingefügt bzw. geändert wird und für die Spalte spalte der Defaultwert verwendet wird.

voreinstellung nicht angegeben:
Es gibt keinen SQL-Defaultwert.
Bei Spalten ohne Nicht-NULL-Bedingung wird der NULL-Wert eingetragen.


[CONSTRAINT integritätsbedingungsname] spaltenbedingung

Definiert eine Integritätsbedingung für die Spalte. Sie dürfen Integritätsbedingungen nicht für multiple Spalten angeben.

[CONSTRAINT integritätsbedingungsname] spaltenbedingung nicht angegeben:Keine Spaltenbedingung definiert.

CONSTRAINT integritätsbedingungsname

Vergibt einen Namen für die Integritätsbedingung. Der einfache Name der Integritätsbedingung muss innerhalb des Schemas eindeutig sein. Der Name der Integritätsbedingung kann durch einen Datenbank- und Schemanamen qualifiziert werden. Dieser Datenbank- und Schemaname muss mit dem Datenbank- und Schemanamen der Basistabelle übereinstimmen, für die die Integritätsbedingung erzeugt wird.

CONSTRAINT integritätsbedingungsname nicht angegeben:
Die Integritätsbedingung erhält einen Namen nach folgendem Schema:

UN integritätsbedingungsnummer
PK integritätsbedingungsnummer
FK integritätsbedingungsnummer
CH integritätsbedingungsnummer
wobei UN für UNIQUE, PK für PRIMARY KEY, FK für FOREIGN KEY und CH für CHECK steht. integritätsbedingungsnummer ist eine 16-stellige Nummer. Die NichtNULL-Bedingung wird als Check-Bedingung abgespeichert.

spaltenbedingung

Gibt eine Integritätsbedingung an, die die Spalte erfüllen muss.


call_dml_klausel

Die CALL-DML-Klausel dient der Kompatibilität mit der Version SESAM/SQL V1.x. Die CALL-DML-Klausel darf nur für CALL-DML-Tabellen angegeben werden, aber nicht für Spalten, die den Primärschlüssel bilden. In diesem Fall vergibt SESAM/SQL sowohl die call_dml_voreinst als auch den call_dml_symb_name.

call_dml_klausel nicht angegeben:
Die Spaltendefinition gilt entweder für eine SQL-Tabelle oder für den Primärschlüssel einer CALL-DML-Tabelle. Bei einer SQL-Tabelle darf die CREATE TABLE- bzw. ALTER TABLE-Anweisung, in der die Spaltendefinition auftritt, ebenfalls keine CALL-DML-Klausel enthalten.

call_dml_voreinst

Gibt den nicht signifikanten Wert einer Spalte als alphanumerisches Literal an.

call_dml_voreinst entspricht dem nicht signifikanten Attributwert der SESAM/SQL-Version 1.x.

call_dml_symb_name

Gibt den symbolischen Namen der Spalte an.

call_dml_symb_name entspricht dem symbolischen Attributnamen der SESAM/SQL-Version 1.x .

call_dml_symb_name nicht angegeben:
Der call_dml_symb_name wird vom System vergeben.

Besonderheiten für CALL-DML-Tabellen

Bei Spaltendefinitionen müssen für CALL-DML-Tabellen folgende Einschränkungen berücksichtigt werden:

  • Es sind nur die Datentypen CHAR, NUMERIC, DECIMAL, INTEGER oder SMALLINT erlaubt.

  • Für die Spalte darf mit DEFAULT kein voreingestellter Wert definiert werden. Auch der Defaultwert FOR REF ist nicht erlaubt.

  • Die Tabelle muss genau eine Primärschlüsselbedingung als Spaltenbedingung oder als Tabellenbedingung enthalten.

  • Die Tabellenbedingung definiert einen zusammengesetzten Primärschlüssel und muss einen Namen erhalten, der dem Namen des zusammengesetzten Primärschlüssels in SESAM/SQL V1.x entspricht.

  • Der Spaltenname muss sich vom Integritätsbedingungsnamen der Tabellenbedingung unterscheiden, da dieser Name als Name des zusammengesetzten Primärschlüssels verwendet wird.

  • Eine Spalte, die nicht Primärschlüssel ist, muss eine CALL-DML-Klausel enthalten.

Beispiele für Spaltendefinition


Das Beispiel zeigt einen Ausschnitt aus der CREATE TABLE-Anweisung für die Tabelle AUFTRAG der Datenbank AUFTRAGKUNDEN.


CREATE TABLE auftrag

(anr

knr

konr

adatum

atext

fertigist

fertigsoll

astnr

...)


INTEGER,

INTEGER NOT NULL,

INTEGER,

DATE DEFAULT CURRENT_DATE,

CHARACTER (30),

DATE,

DATE,

INTEGER DEFAULT 1 NOT NULL,


Das Beispiel zeigt die CREATE TABLE-Anweisung für die Tabelle KATART der Datenbank AUFTRAGKUNDEN. Diese Tabelle beinhaltet zwei REF-Spalten.


CREATE TABLE katart

(artnr

abb

beschr


INTEGER NOT NULL,

FOR REF(zusaetze.bilder),

FOR REF(zusaetze.beschreibung))