最近在MySQL中实现了Oracle/PostgreSQL中UPDATE…RETURNING…语法,实现过程中详细分析了update语法SQL解析过程,博客中记一笔
mysql_update调用过程
执行一条update语句的入口,函数参数:
int mysql_update(THD *thd,TABLE_LIST *tables,List<item> &fields,
List</item><item> &values,COND *conds,
uint order_num, ORDER *order, ha_rows limit,
enum enum_duplicates handle_duplicates, bool ignore,
ha_rows *updated_return);
</item> |
int mysql_update(THD *thd,TABLE_LIST *tables,List<item> &fields,
List</item><item> &values,COND *conds,
uint order_num, ORDER *order, ha_rows limit,
enum enum_duplicates handle_duplicates, bool ignore,
ha_rows *updated_return);
</item>
传入参数比较多,重点介绍其中几个:
fields:set左值集合,即需要set的字段集合
values:set右值集合,与fields中的字段一一对应
conds:where字段,想详细了解这部分可以参考orczhou的一篇博客
found_return,found_return:这两个是输出参数,返回根据where条件找到的记录数和实际发生更新的记录数
[……]
继续阅读