如果我希望在从机上复制局部变量,我可以在触发器中使用局部变量吗?
我有一个触发器,它使用在触发查询之前设置的局部变量@userId。因此,每次运行某个查询时,都会设置变量@userId,并且触发器可以使用它。
我的问题是,如果我的binlog_format是语句,我是否可以期望bin日志正确工作?
我知道从文件中会话变量将不能工作,但它们没有提到局部变量。
在基于语句的复制中,在更新表的语句中使用会话变量时,不会正确复制会话变量.
发布于 2018-08-07 04:55:29
我有一个触发器,它使用在触发查询之前设置的局部变量@userId。
局部变量是在复合语句级别上定义的变量,该复合语句作用域使用DECLARE variable语句显式定义。他们的名字的第一个符号不能是@。
用户定义的变量是会话作用域变量(在SET或INSERT INTO语句中)由其名称的前2个符号隐式定义的(第一个是@,第二个不是)。
所以你使用的是用户消耗变量,而不是局部变量。
复制完全忽略了用户定义的变量。
如果我希望在从机上复制局部变量,我可以在触发器中使用局部变量吗?
答案是“不”。使用自定义服务表。
从文档中我知道会话变量将无法工作,但它们没有提到局部变量。
会话变量是与会话作用域重复的系统变量。它们(当存在时)覆盖系统变量值。它们不是本地的或用户定义的,它们是一个独立的变量类型。至于用户定义的变量,它们的前两个符号是@,而不是@ --这表明它们的值可以由具有会话作用域的用户设置(就像用户定义的变量)。
https://dba.stackexchange.com/questions/214218
复制相似问题