怎么理解MySQL中的sql_safe_updates生效点
本篇内容主要讲解“怎么理解MySQL中的sql_safe_updates生效点”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么理解MySQL中的sql_safe_updates生效点”吧!
boolmulti_delete_precheck(THD*thd,TABLE_LIST*tables){SELECT_LEX*select_lex=thd->lex->select_lex;TABLE_LIST*aux_tables=thd->lex->auxiliary_table_list.first;TABLE_LIST**save_query_tables_own_last=thd->lex->query_tables_own_last;DBUG_ENTER("multi_delete_precheck");/*sql_yaccguaranteesthattablesandaux_tablesarenotzero*/DBUG_ASSERT(aux_tables!=0);if(check_table_access(thd,SELECT_ACL,tables,FALSE,UINT_MAX,FALSE))DBUG_RETURN(TRUE);/*Sinceaux_tableslistisnotpartofLEX::query_tableslistwehavetojugglewithLEX::query_tables_own_lastvaluetobeablecallcheck_table_access()safely.*/thd->lex->query_tables_own_last=0;if(check_table_access(thd,DELETE_ACL,aux_tables,FALSE,UINT_MAX,FALSE)){thd->lex->query_tables_own_last=save_query_tables_own_last;DBUG_RETURN(TRUE);}thd->lex->query_tables_own_last=save_query_tables_own_last;if((thd->variables.option_bits&OPTION_SAFE_UPDATES)&&!select_lex->where_cond())//这里检查是否开启了参数同时没有where条件{my_message(ER_UPDATE_WITHOUT_KEY_IN_SAFE_MODE,ER(ER_UPDATE_WITHOUT_KEY_IN_SAFE_MODE),MYF(0));//报错DBUG_RETURN(TRUE);}DBUG_RETURN(FALSE);}
简单记录一下功能:
SQL_SAFE_UPDATES = 1时,不带where和limit条件的update和delete操作语句是无法执行的,即使是有where和limit条件但不带key column的update和delete也不能执行。
SQL_SAFE_UPDATES =0时,update和delete操作将会顺利执行。
到此,相信大家对“怎么理解MySQL中的sql_safe_updates生效点”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。