mysql如何可以定义一个全局变量呢?
在所有的存储过程里面都可以访问这个变量的。

解决方案 »

  1.   

    如果在同一个连接中则直接 set @x=123; 则在这个相同连接中的所有过程都可以访问这个@x, 但如果不同的连接则没办法。
      

  2.   


    没有建立什么连接的,就是一个EVENT里面,每天定时运行。当这个EVENT正在工作的时候就设置一个标志变量,这时候某个触发器就能发现这个变量的值。具体的情景是这样的:我有个EVENT,每天要进行定时清理过期数据的工作,但是此时还有数据写入被清理的表中,同时执行这两个动作的时候,会出现一个锁定超时的错误。因为数据量很大,清理数据的时候,数据写入超时。所以想在清理数据的时候,设置标志变量为正在清理状态,这时候,数据写入的动作发现这个变量,就不会写入了,直到清理结束,再将变量置为空闲,写入动作再次启动。
      

  3.   

    event 是是一个不同的连接。 没有这种公共变量。如果一定要实现,建议用个表。
      

  4.   


    怎么办?
    谁有解决思路?
    让EVENT执行的时候TRIGGER停止?
      

  5.   

    修改MYSQL源代码,添一个自己想要的global系统变量
      

  6.   

    这倒是个好主意。
    不过我有了个巧妙的解决办法:将全局变量connect_timeout作为我的变量来使用。
    这个变量的作用不是特别重要,可以由我借用。呵呵。