CREATE TABLE-Befehl für typisierte Tabellen (SQL)

In SQL werden typisierte Tabellen mit folgender CREATE-Anweisung erzeugt:

SQL-Syntax der CREATE-Anweisung für typisierte Tabellen:

   <CREATE typisierte TABLE Anweisung> ::=
CREATE TABLE Tabellenname OF Typname ( REF IS OID-Spaltenname [<Referenzgenerierungsart>] [, <Spaltenoptions-bzw-Tabellenbedingungsliste>] ) <Referenzgenerierungsart> ::= SYSTEM GENERATED -- systemgeneriert | FROM ( Spaltenname [, Spaltenname]...) -- abgeleitet vom Primär-/Eindeutigkeitsschlüssel | USING Typname -- benutergeneriert

SQL-Syntax der CREATE-Anweisung für Sub-Tabellen zum Aufbau von Tabellenhierarchien:

   <CREATE Sub-TABLE Anweisung> ::=
CREATE TABLE Tabellenname OF Typname UNDER Supertabellenname [(<Spaltenoptions-bzw-Tabellenbedingungsliste>)]

Die OID-Generierung entspricht der OID-Typspezifikation und hat folgende Varianten:

  • REF IS <OID-Spaltennamen> SYSTEM GENERATED: Der Wert für die OID-Spalte wird beim Einfügen eines Objekts vom System generiert. Es ist die Default-Einstellung.
  • REF IS <OID-Spaltennamen> DERIVED (Spalte1,...,Spalten): Als Werte für die OID-Spalte(n) werden beim Einfügen eines Objekts die Werte anderer Spalten der Tabelle verwendet und automatisch in die OID-Spalte übernommen.
  • REF IS <OID-Spaltennamen> USER GENERATED: Der Wert für die OID-Spalte wird beim Einfügen eines Objekts vom Benutzer als eigener Spaltenwert vorgegeben.

Die Spaltenoptionen können Optionen enthalten, die mit WITH OPTIONS eingeleitet werden und mit NOT NULLL, CHECK(Klausel) und SCOPE? in etwa den COLUMN CONSTRAINTS entsprechen. Die Tabellenbedingungen entsprechen den TABLE CONSTRAINTS. Im einfachsten Fall wird zum Typ eine Tabelle angelegt, wobei auch mehrere Tabellen auf einem Typ aufsetzen können.

Beispiele:

  -- Euro als DISTINCT-Typ definiert     
  CREATE TYPE euroTyp AS DECIMAL(20,2) FINAL; 

  -- instantiierbarer Typ, der kein Supertyp ist  
  CREATE TYPE artikel_typ AS (artikel_nr        NUMERIC(20), 
                              bezeichnung       VARCHAR(100),  
                              preis_netto       euroTyp) 
                              INSTANTIABLE  FINAL

  -- Typisierte Tabelle vom Typ artikel_typ 
  CREATE TABLE artikel_tt OF artikel_typ (REF IS obj_id SYSTEM GENERATED, 
                                          Artikel_nr    PRIMARY KEY,
                                          bezeichnung   NOT NULL);


  -- Eine typisierte Tabelle basierend auf einem benutzerdefinierten Datentyp mit systemgenerierter OID.
  CREATE TABLE mitarbeiter OF mita_typ (REF IS mita_oid SYSTEM GENERATED);

Quellen:

  • ANSI/ISO/IEC 9075-1:2003. Part 1 "SQL/Framework", ISO International Organization for Standardization / ANSI American National Standards Institute, September 2003
  • ANSI/ISO/IEC 9075-2:2003. Part 2 "SQL/Foundation", ISO International Organization for Standardization / ANSI American National Standards Institute, Dezember 2003
  • Türker, Can/Saake, Gunter: "Objektrelationale Datenbanken", dpunkt-verlag, Heidelberg, 2006, ISBN 3-89864-190-2

siehe auch: CREATE-VIEW-Typisiert

Kategorie: Objektrelationale DB, C