SET变量

2020-12-01
SET variable = expr [, variable = expr] ...
SET variable := expr [, variable = expr] ...

set可以设置的变量:

用户定义的变量

SET @name = 43;
SET @total_tax = (SELECT SUM(tax) FROM taxable_transactions);

存储过程和函数参数、存储程序局部变量

CREATE PROCEDURE p(increment INT)
BEGIN
  DECLARE counter INT DEFAULT 0;
  WHILE counter < 10 DO
    -- ... do work ...
    SET counter = counter + increment;
  END WHILE;
END;

系统变量

GLOBAL/@@GLOBAL代表全局变量
SESSION/@@SESSION/LOCAL/@@LOCAL/@@/不带任何参数 代表会话变量
如果更改当前会话系统变量,则该值将在会话内保持有效,直到将变量更改为其他值或会话结束为止。该更改对其他会话没有影响。
如果更改全局系统变量,则该值将被记住并用于初始化新会话的会话值,直到将变量更改为其他值或服务器退出。任何访问全局值的客户端都可以看到该更改。但是不会影响当前已开启的客户端会话

SET语句不会写入二进制日志,因此在复制场景中,它只影响执行它的主机。要影响所有复制主机,请在每个主机上执行该语句。

{/if}