Extensions Image, Audio et Vidéo Administration et programmation

Activation de tables

Pour activer une table pour une extension DB2, utilisez l'API DBxEnableTable (où x correspond à a pour Audio, i pour Image ou v pour Vidéo) ou la commande ENABLE TABLE.

Lors de l'activation d'une table utilisateur, vous devez également spécifier les espaces table devant contenir les tables de gestion associées (et leurs index). Un ou plusieurs espaces table spécifiés peuvent avoir une valeur nulle, auquel cas un espace table par défaut est utilisé.

Produit EEE uniquement : Lors de l'activation d'une table pour une extension dans un environnement partitionné, l'espace table spécifié doit être défini dans un groupe de noeuds comprenant tous les noeuds du système de bases de données partitionnées. Par ailleurs, l'espace table mentionné doit être situé dans le même groupe de noeuds que la table utilisateur.

Produit EEE uniquement : Vous ne pouvez pas utiliser une colonne d'extension DB2 comme colonne de clés de partitionnement dans un environnement de bases de données partitionnées.

Vous devez disposer du droit Control ou Alter sur la table utilisateur. La base de données doit être active pour que vous puissiez activer l'une de ses tables.

Dans les exemples ci-après, une table est activée pour la gestion des données de type image, via l'espace table par défaut. La base de données est déjà active.

Utilisation de l'interface API : Dans l'exemple suivant, le code permet de créer la table et de valider les modifications. L'exemple comprend le code de vérification des erreurs. Le modèle de programme complet se trouve dans le fichier ENABLE.C du sous-répertoire SAMPLES.

Figure 11. Modèle de code permettant d'activer une table

 
        SQLCHAR szCreate_DB2UDB[]="CREATE TABLE %s(%s mmdbsys.DB2Image,
        %s mmdbsys.DB2Video, %s mmdbsys.DB2Audio, artist varchar(25), 
        title varchar(25), stock_no char(11), tw char(10), price char(10))";
 
        SQLRETURN rc = SQL_SUCCESS;
        SQLINTEGER sqlcode = 0;
        char errorMsgText[MMDB_ERROR_MSG_TEXT_LEN+1];
        char tableName[8+18+1] = "sobay_catalog";
        char audioColumn[18+1] = "music";
char imageColumn[18+1] = "covers";
        char videoColumn[18+1] = "video";
        char *program = "enable";
        char *step;
       
/*-----création d'une table
--------------------------------------------------*/
       printf("%s: Creating table ......\n", program);
     if (!SERVER_IS_DB2390)
         sprintf((char*) buffer, (char*) szCreate_DB2UDB,
                   tableName, imageColumn, videoColumn, audioColumn):
       
rc = SQLAllocStmt(hdbc, &hstmt);
cliCheckError(SQL_NULL_HENV, hdbc, SQL_NULL_HSTMT, rc);
       rc = SQLExecDirect(hstmt, buffer, SQL_NTS);
         cliCheckError(SQL_NULL_HENV, SQL_NULL_HDBC, hstmt, rc);
 
/*---- Activation d'une table pour l'extension Image ----------*/
        printf("%s: Enabling table......\n", program);
step="DBiEnableTable";
     if (!SERVER_IS_DB2390)
         rc = DBiEnableTable(NULL,tableName);
           }
if (rc < 0) {
                printf("%s: %s failed!\n", program, step);
   printMsg(rc);
     DBiGetError(&sqlcode, errorMsgText);
           if (sqlcode)
                  printf("sqlcode=%i, "sqlcode");
                printf("errorMsgText=%s\n", errorMsgText);
} else if (rc > 0) {
           printf("%s: %s, warning detected.\n", program, step);
   printMsg(rc);
     DBiGetError(&sqlcode, errorMsgText);
           printf("warningMsgText=%s\n", errorMsgText);
     } else
                printf("%s: %s OK\n", program, step)
/*---- Fin de l'activation de la table --------------------------*/
 
 

Utilisation de la ligne de commande DB2 : Dans cet exemple, la table existe déjà et la base de données est active.

enable table Employés for db2image


[ Début de page | Page précédente | Page suivante | Table des matières | Index ]