首页 > 编程知识 正文

全局和局部变量的区别,全局变量怎么定义

时间:2023-05-04 03:52:33 阅读:137902 作者:3135

全局和局部变量

每个全局变量在服务器启动时初始化为默认值。 可以使用命令行或选项文件中指定的选项更改这些缺省值。 然后,服务器为每个连接的客户端维护一组会话变量,并在连接时使用相应全局变量的当前值初始化客户端会话变量。

例如,在服务器启动时,default_storage_engine系统变量将初始化,并且范围将变为GLOBAL。 然后,每当一个客户端连接到该服务器时,服务器都会单独为该客户端指派名为default_storage_engine的系统变量。 范围为SESSION且范围为SESSION的系统变量的值将初始化为当前范围为GLOBAL的同名系统变量的值。

很明显,通过启动选项设置的系统变量的范围是全局。 这意味着它对所有客户端都有效。 因为系统启动时还没有连接客户程序。 了解了GLOBAL和SESSION系统变量的范围后,我们来看看在服务器程序运行时用于从客户端程序设置系统变量的语法。

set [ global ]系统变量名称=值;

或者,也可以写如下。

set[@@(global|session ).]var_name=XXX;

例如,如果在服务器正在运行时,您要将范围为GLOBAL的default_storage_engine系统变量的值更改为MyISAM,即稍后连接到服务器的新客户端将作为缺省存储引擎

文1:set global default _ storage _ engine=myisam;

文2:set @ @ global.default _ storage _ engine=myisam;

如果只为此客户机启用,还可以选择以下三条语句之一进行设置:

文1:setsessiondefault _ storage _ engine=myisam;

文2:set @ @ session.default _ storage _ engine=myisam;

语句3:set default _ storage _ engine=myisam;

如上面的语句3所示,如果在设置系统变量的语句中省略了范围,则缺省范围为SESSION。 也就是说,SET系统变量名称=值和SET SESSION系统变量名称=值是等效的。

显示不同作用域的系统变量

既然系统变量具有作用域,那么SHOW VARIABLES语句引用的是哪个作用域的系统变量呢?

答:默认情况下,显示SESSION适用范围的系统变量。

当然,可以将任何范围的系统变量添加到显示系统变量的语句中,如下所示:

show [ global|session ] variables [ like匹配模式]

这是微网-程序员之家为你提供的' mysql全局变量和局部变量'希望对你有帮助。 本文来源于网络,转载请注明出处: http://www.weixu ECN.cn/article/9029.html

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。