Lors de l'utilisation de la procédure mémorisée, vous pouvez créer des index de texte sur des vues. Cependant, un inconvénient majeur réside dans le fait que vous ne pouvez pas créer de déclencheurs sur des vues, aussi les modifications des tables de base sous-jacentes ne sont pas reconnues.
Ainsi, avec les mises à jour incrémentielles d'index, l'utilisateur doit savoir quel document a été ajouté, mis à jour ou supprimé afin de synchroniser l'index de texte avec la base de données. Pour ce faire, vous devez ajouter toutes les modifications à la table de journalisation. Ce processus est illustré dans le modèle suivant :
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','travaille dans le bureau 301')" db2 "insert into sample values(2,'Manja','se trouve dans le même bureau que Juergen')" db2 "insert into sample values(2,'Juergen','est le plus loin de Raiko')" db2 "insert into sample values(3,'Raiko','est assis dans le bureau à côté de 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"
Remarque |
---|
Vous devez spécifier la table de la mémoire cache pour pouvoir créer un index de texte sur une vue. Pour créer la table de journalisation correcte, vous devez spécifier les colonnes clés pour l'index sur une vue. Dans un environnement DB2 réparti, vous devez spécifier un espace table pour les tables d'administration sur un seul noeud ou appeler sur ce noeud de manière explicite. Pour être sûr que vous vous connectez au bon noeud, utilisez la variable d'environnement DB2NODE. |
db2 "insert into sample values(4,'Bernhard','travaille au même étage que Manja, mais pas que Claus')" db2 "insert into sample values(5,'Guenter','partage le même bureau que Raiko')"
db2 "select INDSCHEMA,INDNAME,LOGVIEWSCHEMA,LOGVIEWNAME from db2ext.textindexes"La table de journalisation se présente comme suit :
sqltype sqllen sqlname.data sqlname.length -------------------- ------ ----------------------- -------------- 496 INTEGER 4 OPERATION 9 392 TIMESTAMP 26 TIME 4 497 INTEGER 4 PK01 4Pour ajouter les entrées à la table de journalisation, utilisez les commandes suivantes :
db2 "insert into sample values(0,CURRENT TIMESTAMP,4)" db2 "insert into sample values(0,CURRENT TIMESTAMP,5)"La première valeur décrit l'opération (0 = insertion, 1 = mise à jour, 2 = suppression). La seconde doit toujours être CURRENT TIMESTAMP (horodatage en cours) et la dernière, la clé qui a été insérée.
db2text "update index indexview for text"
Vous pouvez désormais utiliser la procédure mémorisée pour rechercher dans les nouvelles valeurs.