创建表 |
| 发布时间: 2012/8/23 17:27:10 |
|
一旦实例化了处理程序,所需的第1个操作很可能是创建表。
你的存储引擎必须实现create()虚拟函数:
virtual int create(const char *name, TABLE *form, HA_CREATE_INFO *info)=0; 电脑常识www.boydavid.com
该函数应创建所有必须的文件,然后关闭表。MySQL服务器将调用随后需打开的表。 *name参数是表的名称。*form参数是st_table结构,该结构定义了表并与MySQL服务器已创建的tablename.frm文件的内容匹配。在大多数情况下,存储引擎不需要更改tablename.frm文件,也没有支持该操作的预置功能。 *info参数是包含CREATE TABLE语句用于创建表所需信息的结构。该结构定义于handler.h文件中,并为了便于参考列于下面:
typedef struct st_ha_create_information
{
CHARSET_INFO *table_charset, *default_table_charset; 电脑知识www.boydavid.com
LEX_STRING connect_string;
const char *comment,*password;
const char *data_file_name, *index_file_name;
const char *alias;
ulonglong max_rows,min_rows; 电脑硬件www.boydavid.com
ulonglong auto_increment_value;
ulong table_options;
ulong avg_row_length;
ulong raid_chunksize;
ulong used_fields;
SQL_LIST merge_list; 电脑入门www.boydavid.com
enum db_type db_type;
enum row_type row_type; 电脑常识www.boydavid.com
uint null_bits; /* NULL bits at start of record */
uint options; /* OR of HA_CREATE_ options */
uint raid_type,raid_chunks;
uint merge_insert_method;
uint extra_size; /* length of extra data segment */
bool table_existed; /* 1 in create if table existed */
bool frm_only; /* 1 if no ha_create_table() */
bool varchar; /* 1 if table has a VARCHAR */
} HA_CREATE_INFO;
基本的存储引擎能忽略*form和*info的内容,这是因为,真正所需的是创建存储引擎所使用的数据文件,以及对数据文件的可能初始化操作(假定存储文件是基于文件的)。 本文出自:亿恩科技【www.enkj.com】 |
京公网安备41019702002023号