DBxEnableTable API (ここで、x は音声の場合は a、画像の場合は i、ビデオの場合は v) または、ENABLE TABLE コマンドで DB2 エクステンダー用の表を使用可能にします。
ユーザー表を使用可能にする場合、ともに使用する管理サポート表 (およびその索引) を保持するための表スペースも指定しなければなりません。 指定した表スペースの 1 つまたはそれ以上がヌル値であることがありますが、その場合には省略時表スペースが使用されます。
EEE のみ: 区画環境でエクステンダー用に表を使用可能にする場合、指定する表スペースを、区分データベース・システム内のすべてのノードを含むノード・グループ内に定義しなければなりません。 さらに、指定した表スペースは、ユーザー表と同じノード・グループ内に配置しなければなりません。
EEE のみ: DB2 エクステンダー列を、区分データベース環境の区分化キーとして使用することはできません。
ユーザー表に対する Control か Alter 権限が必要です。 表を使用可能にするには、その表が含まれているデータベースが使用可能になっていなければなりません。
次の例では、表が使用可能にされ、省略時の表スペースに画像データが入れられます。 このデータベースはすでに使用可能になっています。
API の使用: 次の例で、表が使用可能にされる前に、コードで表が作成され、変更がコミットされます。 この例には、エラー検査コードが組み込まれています。 このサンプル・プログラム全体は、SAMPLES サブディレクトリーの ENABLE.C ファイルにあります。
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 --------------------------------------------*/ |
db2ext コマンド行の使用: この例では、表がすでに存在しており、データベースが使用可能になっています。
enable table employee for db2image