handlersocket使用 第六章 Inserting data

注: 本文档主要根据原作者的英文文档protocol.en.txt写成,做了一些翻译工作和添加了一些例子以及一些需要注意的地方。如果本文档对你有所帮助,欢迎关注我的新浪微博:http://weibo.com/u/1857063732 如果有建议,欢迎发送到我的邮箱[email protected] 目前就职于 欢聚时代(YY), 从事于后台开发工作


Insertingdata

英文原文如下

Insertingdata

        

The'insert' request has the following syntax.

 

    + ...

 

- indicates the length of the trailing parameters .... This

  must be smaller than or equal to the lengthof specified by the

  corresponding 'open_index' request.

- ... specify the column values to set. For columns not in

  , the default values for eachcolumn are set.

 

‘insert’请求有以下参数:

 

+ ...

 

-是接下来参数 ... 的个数。这个数字必须不大于那个在其相对于的‘open_index’请求中指定的参数的的列数。

 

-... 指定了要被插入的列值。对于那些不在中的列,将被设为默认的值。

 

 

Response for 'insert'

英文原文如下

If'insert' is succeeded, HandlerSocket returns a line of the following

syntax.

 

   0 1

 

如果‘insert’请求发送成功,Handlersocket将会返回以下返回值0(插入成功)或1(插入失败)。

 

 

下面发给例子:

cli->request_buf_open_index(1, "test","test1", "index1", "col1,col2,col3"); 

........

vector vec;

vec.push(..)

.....

const string kTestInsertOp("+");

const string_ref kTestInsertOpRef(kTestInsertOp.data(),kTestInsertOp.size());

 

cli->request_buf_exec_generic(indexid,kTestInsertOpRef,&vec[0],vec_length,0,0,0, 0, 0, 0);

int res = cli->request_send();

.....

 

a.当表的主键是自增的一个值时,如上例中col0为主键,则将会把新建行的主键的值以类似‘find’请求的结果返回。

 

b.注意:当某一个列的类型为timestamp default CURRENT_TIMESTAMP时,插入的值将为

0000-00-00 00:00:00(无论在request_buf_open_index中是否打开)。

1.可以使用的间接解决方法,insert之后update,如:

cli->request_buf_exec_generic(1,kTestInsertOpRef,&vec[0],vec_size,0,0,0, 0, 0, 0);      

 cli->request_buf_exec_generic(1,kTestEqualOpRef,&vec[0],vec_size,limit,offset,kTestUpdateOpRef,&vec_in[0],vec_in_szie);

 

cli->request_send()......

 

2.把timestamp时间类型改为datetime类型。但是datetime类型不支持default,好像得写触发器实现。

 

 

你可能感兴趣的:(handlersocket使用)