首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL:复制和局部变量

MySQL:复制和局部变量
EN

Database Administration用户
提问于 2018-08-06 20:04:11
回答 1查看 117关注 0票数 0

如果我希望在从机上复制局部变量,我可以在触发器中使用局部变量吗?

我有一个触发器,它使用在触发查询之前设置的局部变量@userId。因此,每次运行某个查询时,都会设置变量@userId,并且触发器可以使用它。

我的问题是,如果我的binlog_format是语句,我是否可以期望bin日志正确工作?

我知道从文件中会话变量将不能工作,但它们没有提到局部变量。

在基于语句的复制中,在更新表的语句中使用会话变量时,不会正确复制会话变量.

EN

回答 1

Database Administration用户

发布于 2018-08-07 04:55:29

我有一个触发器,它使用在触发查询之前设置的局部变量@userId。

局部变量是在复合语句级别上定义的变量,该复合语句作用域使用DECLARE variable语句显式定义。他们的名字的第一个符号不能是@

用户定义的变量是会话作用域变量(在SETINSERT INTO语句中)由其名称的前2个符号隐式定义的(第一个是@,第二个不是)。

所以你使用的是用户消耗变量,而不是局部变量。

复制完全忽略了用户定义的变量。

如果我希望在从机上复制局部变量,我可以在触发器中使用局部变量吗?

答案是“不”。使用自定义服务表。

从文档中我知道会话变量将无法工作,但它们没有提到局部变量。

会话变量是与会话作用域重复的系统变量。它们(当存在时)覆盖系统变量值。它们不是本地的或用户定义的,它们是一个独立的变量类型。至于用户定义的变量,它们的前两个符号是@,而不是@ --这表明它们的值可以由具有会话作用域的用户设置(就像用户定义的变量)。

票数 1
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/214218

复制
相关文章

相似问题

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