Zum Speichern eines XML-Dokuments in einer DB2-Datenbank müssen Sie eine Spalte für XML aktivieren. Durch das Aktivieren wird die Spalte für die Indexierung vorbereitet, so daß sie schnell durchsucht werden kann. Sie können eine Spalte mit dem XML Extender-Verwaltungsassistenten aktivieren oder über die DB2-Befehls-Shell. Die Spalte muß den Typ XML haben.
Beim Aktivieren einer XML-Spalte führt der XML Extender folgende Aktionen aus:
Nach dem Aktivieren der XML-Spalte haben Sie folgende Möglichkeiten:
Erstellen Sie eine XML-Tabelle, indem Sie eine DB2-Tabelle mit einer Spalte des XML-UDT erstellen oder ändern.
Führen Sie zum Aktivieren von XML-Spalten die folgenden Schritte aus:
SALES_TAB
ORDERDie Spalte muß bereits vorhanden sein und den Typ XML haben.
c:\dxx\samples\dad\getstart.dad
Der Tabellenbereich enthält Seitentabellen, die vom XML Extender erstellt wurden. Wenn Sie einen Tabellenbereich eingeben, werden die Seitentabellen in dem angegebenen Tabellenbereich erstellt. Geben Sie keinen Tabellenbereich an, werden die Seitentabellen in dem Standardtabellenbereich erstellt.
Sofern sie angegeben ist, wird die Standardsicht beim Aktivieren der Spalte automatisch erstellt und verknüpft die XML-Tabelle und alle dazugehörigen Seitentabellen.
Der XML Extender verwendet den Wert ROOT ID als eindeutige Kennung für die Zuordnung aller Seitentabellen zu der Anwendungstabelle. Fehlt diese Angabe, fügt der XML Extender der Anwendungstabelle die Spalte DXXROOT_ID hinzu und generiert eine Kennung.
Geben Sie zum Aktivieren einer XML-Spalte den folgenden Befehl ein:
Syntax:
dxxadm enable_column |
---|
>>-dxxadm---enable_column---dbName---tbName---spltName----------> >----DAD_Datei----+----------------------+----------------------> '--t--tabellenbereich--' >-----+--------------------+---+--------------+---------------->< '--v--standardsicht--' '--r--root_id--' |
Parameter:
Einschränkung: Wenn die Anwendungstabelle einen Spaltennamen DXXROOT_ID enthält, diese Spalte jedoch nicht den Wert für root_id enthält, müssen Sie den Parameter root_id angeben; andernfalls tritt ein Fehler auf.
Beispiel: Das folgende Beispiel aktiviert eine Spalte über die DB2-Befehls-Shell. Die DAD-Datei und das XML-Dokument finden Sie in Anhang B, Beispiele.
dxxadm enable_column SALES_DB sales_tab order getstart.dad -v sales_order_view -r invoice_num
In diesem Beispiel wird die Spalte ORDER in der Tabelle SALES_DB.SALES_TAB aktiviert. Die DAD-Datei ist getstart.dad, die Standardsicht ist sales_order_view und die ROOT-ID ist INVOICE_NUM.
In diesem Beispiel hat die Tabelle SALES_TAB das folgende Schema:
Spaltenname | INVOICE_NUM | SALES_PERSON | ORDER |
---|---|---|---|
Datentyp | CHAR(6) | VARCHAR(20) | XMLVARCHAR |
Die folgenden Seitentabellen werden entsprechend der DAD-Spezifikation erstellt:
ORDER_SIDE_TAB:
Spaltenname | ORDER_KEY | CUSTOMER | INVOICE_NUM |
---|---|---|---|
Datentyp | INTEGER | VARCHAR(50) | CHAR(6) |
Pfadausdruck | /Order/@key | /Order/Customer/Name | N/A |
PART_SIDE_TAB:
Spaltenname | PART_KEY | PRICE | INVOICE_NUM |
---|---|---|---|
Datentyp | INTEGER | DOUBLE | CHAR(6) |
Pfadausdruck | /Order/Part/@key | /Order/Part/ExtendedPrice | N/A |
SHIP_SIDE_TAB:
Spaltenname | DATE | INVOICE_NUM |
---|---|---|
Datentyp | DATE | CHAR(6) |
Pfadausdruck | /Order/Part/Shipment/ShipDate | N/A |
Alle Seitentabellen enthalten die Spalte INVOICE_NUM desselben Typs, da die ROOT ID vom Primärschlüssel INVOICE_NUM in der Anwendungstabelle angegeben wurde. Nach dem Aktivieren der Spalte wird der Wert von INVOICE_NUM in die Seitentabellen eingefügt. Die Angabe des Parameters default_view beim Aktivieren der XML-Spalte ORDER bewirkt, daß eine Standardsicht sales_order_view erstellt wird. Die Sicht verknüpft die obigen Tabellen mit der folgenden Anweisung:
CREATE VIEW sales_order_view(invoice_num, sales_person, order, order_key, customer, part_key, price, date) AS SELECT sales_tab.invoice_num, sales_tab.sales_person, sales_tab.order, order_tab.order_key, order_tab.customer, part_tab.part_key, part_tab.price, ship_tab.date FROM sales_tab, order_tab, part_tab, ship_tab WHERE sales_tab.invoice_num = order_tab.invoice_num AND sales_tab.invoice_num = part_tab.invoice_num AND sales_tab.invoice_num = ship_tab.invoice_numWenn der Tabellenbereich im Befehl enable_column angegeben ist, werden die Seitentabellen in dem angegebenen Tabellenbereich erstellt. Ist der Tabellenbereich nicht angegeben, werden die Seitentabellen in dem Standardtabellenbereich erstellt.