Verwenden Sie die API DBxEnableTable (wobei x den Wert a für Audio, i für Abbild (Image) oder v für Video hat) oder den Befehl ENABLE TABLE, um eine Tabelle für einen DB2 Extender zu aktivieren.
Beim Aktivieren einer Benutzertabelle müssen Sie außerdem Tabellenbereiche angeben, die die zugehörigen Tabellen zur Verwaltungsunterstützung (und deren Indizes) halten sollen. Für einen oder mehrere der Tabellenbereiche kann ein Nullwert angegeben werden. In diesem Fall wird ein Standardtabellenbereich verwendet.
Nur EEE: Beim Aktivieren einer Tabelle für einen Extender in einer partitionierten Umgebung sollte der angegebene Tabellenbereich in einer Knotengruppe definiert sein, die alle Knoten im partitionierten Datenbanksystem umfaßt. Außerdem muß sich der Tabellenbereich in derselben Knotengruppe befinden wie die Benutzertabelle.
Nur EEE: Sie können eine DB2 Extender-Spalte nicht als Partitionierungsschlüsselspalte in einer Umgebung für partitionierte Datenbanken verwenden.
Sie benötigen Steuerungs- oder Änderungsberechtigung für die Benutzertabelle. Die Datenbank muß aktiviert sein, bevor Sie eine Tabelle darin aktivieren.
In den folgenden Beispielen wird eine Tabelle zum Halten von Abbilddaten aktiviert, wobei der Standardtabellenbereich verwendet wird. Die Datenbank ist bereits aktiviert.
Verwendung der API: Im folgenden Beispiel erstellt der Code, bevor die Tabelle aktiviert wird, die Tabelle und schreibt Änderungen fest. Das Beispiel enthält unter anderem Fehlerprüfcode. Das vollständige Beispielprogramm befindet sich in der Datei ENABLE.C im Unterverzeichnis SAMPLES.
Abbildung 11. Beispielcode, mit dem eine Tabelle aktiviert wird
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; /*-----create 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); /*---- enable table for image extender ---------------------------------*/ 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) /*---- end of enable table --------------------------------------------*/ |
Verwendung der db2ext-Befehlszeile: In diesem Beispiel besteht die Tabelle bereits, und die Datenbank ist aktiviert.
enable table employee for db2image