Wenn Sie die gespeicherte Prozedur verwenden, können Sie Textindizes für Sichten erstellen. Allerdings besteht ein gravierender Nachteil darin, dass für Sichten keine Auslöser erstellt werden können, sodass alle Änderungen in den zu Grunde liegenden Basistabellen nicht erkannt werden.
Bei Indexteilaktualisierungen muss der Benutzer dementsprechend wissen, welches Dokument hinzugefügt, aktualisiert oder gelöscht wurde, um den Textindex mit der Datenbank zu synchronisieren. Zu diesem Zweck müssen alle Änderungen der Protokolltabelle hinzugefügt werden. Dieser Prozess wird im folgenden Beispiel illustriert:
db2 "create table sample (key INTEGER not null PRIMARY KEY, name VARCHAR(50) not null, comment VARCHAR(90))"
db2 "insert into sample values(1,'Claus','works in room 301')" db2 "insert into sample values(2,'Manja','is in the same office as Juergen')" db2 "insert into sample values(2,'Juergen','has the longest way to Raiko')" db2 "insert into sample values(3,'Raiko','is sitting in the office besides Claus ')"
db2 "create view sampleview as select key, comment from sample"
db2text "create index indexview for text on hde.sampleview(comment) cache table (comment) maximum cache size 1 key columns for index on view (key)" db2text "update index indexview for text" db2text "activate cache for index indexview for text"
Anmerkung |
---|
Sie müssen die Cachetabelle angeben, um einen Textindex für eine Sicht erstellen zu können. Zur Erstellung der korrekten Protokolltabelle müssen Sie die Schlüsselspalten für den Index oder die Sicht angeben. In einer verteilten DB2-Umgebung müssen Sie für Verwaltungstabellen auf einem einzelnen Knoten explizit einen Tabellenbereich angeben und diesen Knoten explizit aufrufen. Um sicherzustellen, dass Sie eine Verbindung zu dem korrekten Knoten herstellen, verwenden Sie die Umgebungsvariable DB2NODE. |
db2 "insert into sample values(4,'Bernhard','is working in the same floor as Manja, but not as Claus')" db2 "insert into sample values(5,'Guenter','shares the office with Raiko')"
db2 "select INDSCHEMA,INDNAME,LOGVIEWSCHEMA,LOGVIEWNAME from db2ext.textindexes"Das Layout der Protokolltabelle sieht folgendermaßen aus:
sqltype sqllen sqlname.data sqlname.length -------------------- ------ ----------------------- -------------- 496 INTEGER 4 OPERATION 9 392 TIMESTAMP 26 TIME 4 497 INTEGER 4 PK01 4Verwenden Sie folgende Befehle, um die Einträge der Protokolltabelle hinzuzufügen:
db2 "insert into sample values(0,CURRENT TIMESTAMP,4)" db2 "insert into sample values(0,CURRENT TIMESTAMP,5)"Der erste Wert beschreibt die Operation (0 = Einfügen, 1 = Aktualisieren, 2 = Löschen). Der zweite sollte immer CURRENT TIMESTAMP lauten und der letzte Wert sollte den Schlüssel angeben, der eingefügt wurde.
db2text "update index indexview for text"
Sie können nun mit Hilfe der gespeicherten Prozedur nach den neuen Werten suchen.