Syntax der Virtab-Definitionen im Definitionsfile
In diesem Abschnitt werden die eigentlichen Virtabs definiert. Angegeben werden müssen:
- Attribute, die sich auf die Virtab als Ganzes beziehen
- Optional eine Liste mit Tabellen, über die der
verbindende Graph im ER-Diagramm läuft, nebst evtl.
QUERY-Zugehörigkeiten, FOREIGNKEY-Angaben und anderen
Attributen (“TABLE”)
-
Die Spalten, die in der Virtab erscheinen sollen, sowie deren Attribute. (“COLUMN”)
- Virtab-Constraints (“CONSTRAINT”)
Die Grundsyntax einer Virtab-Definition ist:
[ "CREATE" ] "VIRTUALTABLE" virtabname
virtab_attribute
[ "TABLE" table_name tabellen_attribute [ "END" ] ]
[ "COLUMN" column_name spalten_attribute [ "END" ] ]
[ "CONSTRAINT" constraint_definition [ "END" ] ]
[ "USES" anderer_virtabname [ "PREFIX" objekt_prefix] ]
[ ONSELECT [ database ] BEGINSQL select-statement ENDSQL ]
[ ONINSERT [ database ] BEGINSQL procedure-body ENDSQL ]
[ ONUPDATE [ database ] BEGINSQL procedure-body ENDSQL ]
[ ONDELETE [ database ] BEGINSQL procedure-body ENDSQL ]
... mehr TABLE, COLUMN, CONSTRAINT, oder USES ...
";"
Das Schlüsselwort “CREATE” ist
optional. Die Anordnung der Definitionsblöcke TABLE, COLUMN,
CONSTRAINT und USES ist im Prinzip frei. Da aber
Tabellen definiert werden müssen, ehe sie in
“COLUMN”-Anweisungen angesprochen werden können, und
“CONSTRAINT” Bedingungen auf defineirten Spalten setzt, ist
obige Anordnung die vorherrschende. Da USES die TABLE,
COLUMN- und CONSTRAINT-Anweisungen bereits definierte Virtabs
integriert, kann es im Prinzip an jedem Ort stehen, es gelten
aber besondere Einschränkungen (siehe Virtab-Modifikation)
virtab_attribute
... sind in beliebiger Reihenfolge:
[ "NOCHANGE" ]
[ "MODIFIES basisvirtab_name ]
[ "HINT" "ORA"| "MSSQL" hint_text ]
[ "TABLEORDER" tablealias_liste ]
[ "TABLEORDER FOR" tablealias ]
[ "COLUMNORDER" spalten_liste ]
[ "FEATURE" feature_name [ feature_argumente ] ]
[ "FEATURE INFO" feature_name ]
[ "INFO" info_text ] [ "VISIBLE" ]
[ "INVISIBLE" ] [ "DISTINCT" ]
NOCHANGE
“NOCHANGE” bedeutete, das die Virtab keine Änderungen an
Basistabellen durchführt. Es ist also nur die View-Definition
benutzbar. Die Virtab-Prozeduren geben bei Aufruf eine
Fehlermeldung aus.
MODIFIES
“MODIFIES” gibt an, dass intern eine Kopie der kompletten
Definition von Virtab “basisvirtab_name” in die Virtab
“virtabname” hineinkopiert wird, und zwar vor allen anderen
Anweisungen. Diese geerbte Definition wird dann durch die
folgenden Anweisungen modifiziert.
HINT
Mit “HINT ORA” kann ein Text angegeben werden, der in die
View-Definition so eingebaut wird: “SELECT /*+ hint_text */
...”. Dies reicht manuelle Optimierungen an das ORACLE-RDBMS
durch. Ein mehrtägiges Studium des “Database Perforance
Tuning Guide” wird empfohlen:-).
“HINT MSSQL” definiert einen Hint für den MS-SQLServer.
TABLEORDER
“TABLEORDER” gibt die Reihenfolge der Basistabellen in der
FROM-Klausel der View-Definition an. Nicht gelistete Tabellen
werden hinter allen angegeben angeordnet. Das ist sinnvoll
als Ergänzung zu “HINT”.
“TABLEORDER FOR” erstellt automatisch eine
Tabellenreihenfolge, die optimal ist, wenn ein Record aus
“tablealias” durch eine Suchbedingung vorgegeben ist.
COLUMNORDER
“COLUMNORDER” gibt die Reihenfolge der Virtab-Spalten in der
View und den Prozeduren vor, unabhängig von der Position
ihrer Definition. Wenn für eine hier gelistete Spalte
undefiniert ist, produziert ER2SQL einen Fehler.
FEATURE
Mit “FEATURE” werden besondere Zusatzfunktionen in View und
Prozeduren eingebaut. Diese sind für spezielle
projekt-abhängige Probleme in ER2SQL eingebaut, und für
andere Nutzer nicht verwendbar.
Von allgemeinem Interesse sind:
“FEATURE IGNORE_ERROR fehlernummer [, fehlernummer ...]”
unterdrückt bestimmte Fehlermeldungen von ER2SQL beim Übersetzen der Virtab.
FEATURE INFO
Für eine Virtab können mit “FEATURE INFO” beliebige
Attribute angegeben werden. Diese bewirken keine
Zusatzfunktionen und können von Applikationen über das
Application-Interface mit “VTHasFeature()” abgefragt werden.
Auf diese Weise kann eine Virtab für einen bestimmten Verwendungszweck markiert werden.
INFO
“INFO” definiert einen Kommentar für die Virtab. Im SQL-Code
für CREATE VIEW wird dieser Text als SQL-Kommentar mit
ausgeben.
VISIBLE, INVISIBLE
“INVISIBLE” bestimmt, dass die Virtab nie erzeugt werden
soll. Das ist für Pseudo-Virtabs sinnvoll, die nur intern als
Bausteine anderer Virtabs verwendet werden (siehe “MODIFIES”
und “USES”)
“VISIBLE” nimmt ein geerbtes “INVISIBLE” zurück.
DISTINCT
“DISTINCT” bewirkt in der Viewdefinition ein “SELECT
DISTINCT”, d.h., es werden garantiert nur von einander
verschiedene Zeilen geliefert.
ONSELECT, ONINSERT, ONUPDATE, ONDELETE
Mit diesen Anweisungen können bestimmte Teile des SQL-Codes
für Views und/oder stored procedures selber angegeben werden.
genauere Infos unter Konzepte.
|