首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将sql模式变量设置为mysql中的局部变量

如何将sql模式变量设置为mysql中的局部变量
EN

Stack Overflow用户
提问于 2017-03-12 02:08:22
回答 2查看 2.2K关注 0票数 0

我想要做的是,将sql_mode变量设置为局部变量,而不是会话变量或全局变量。这样做的原因是,在执行其中一个查询后,我要取消sql模式变量的更改。下面的会议和全球会议工作得很好,但这不是我想要的。全局模式将sql模式永久保留为空模式。会话一保持sql模式为空模式,直到连接关闭。我希望事情是,保持sql模式,直到一个采石场被执行。

代码语言:javascript
复制
mysql> set global sql_mode='';
mysql> set session sql_mode='';

mysql查询:-

代码语言:javascript
复制
SELECT tc_exe_grp_num,tcs.tc_tc_id,tcs.tcs_id  
FROM tc_exe_res tcer 
INNER JOIN tcs tcs 
ON tcs.tcs_id = tcer.tcs_tcs_id  
WHERE tcs.tc_tc_id='1' 
AND tcs.tc_tc_id='1' 
GROUP BY tc_exe_grp_num 
ORDER BY tc_exe_grp_num ;

从这篇文章中得到的想法

请帮帮我。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-03-12 03:27:02

@@sql_mode是会话变量,而不是局部变量。

可以检索sql_mode的当前设置,并将其保存在用户定义的变量中,然后将sql_mode设置为原始设置。

例如:

代码语言:javascript
复制
 -- save current setting of sql_mode in user defined variable
 -- change sql_mode to desired setting
 SET @SAVE_sql_mode = @@sql_mode ;
 SET @@sql_mode = 'NO_ENGINE_SUBSTITUTION' ; 

 -- subsequent operations run under new setting of sql_mode
 SELECT '...';


 -- set sql_mode back to saved setting
 SET @@sql_mode = @SAVE_sql_mode ;  
票数 1
EN

Stack Overflow用户

发布于 2017-03-12 02:35:12

我找不到一个直接的答案,但有一个解决办法,

首先将"sql模式“设置为”空模式“,然后在采石场执行"sql模式”之后,将“sql模式”设置为以前有值的模式,然后以下面的方式进行尝试,

代码语言:javascript
复制
    set session sql_mode='';

    SELECT tc_exe_grp_num,tcs.tc_tc_id,tcs.tcs_id FROM tc_exe_res tcer INNER JOIN tcs tcs ON tcs.tcs_id = tcer.tcs_tcs_id WHERE tcs.tc_tc_id='1' AND tcs.tc_tc_id='1' group by tc_exe_grp_num ORDER BY tc_exe_grp_num ;

    set session sql_mode='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42742934

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档