Error number: 3765; Symbol: ER_GENERATED_COLUMN_VARIABLES; SQLSTATE: HY000
Message: Expression of generated column ‘%s’ cannot refer user or system variables.
ER_GENERATED_COLUMN_VARIABLES错误号码 3765,是 MySQL 数据库系统专有的 SQLSTATE 状态代码, 用于表明变量名称在生成列中不允许使用。
错误说明:
ER_GENERATED_COLUMN_VARIABLES错误代码表明,在MySQL中只有临时表及子查询中可以使用变量名称,而生成列中不允许使用变量名称,一旦试图将其用于生成列中,将会引发该错误。
假设用户试图为一个表创建一个生成列:
CREATE TABLE tbl_name(
name VARCHAR(50) PRIMARY KEY
@var1 VARCHAR(50))
GENERATED ALWAYS AS (CONCAT(“G-“, @var1))
);
上述操作将会引发ER_GENERATED_COLUMN_VARIABLES错误。
解决方法:
要解决ER_GENERATED_COLUMN_VARIABLES,用户可以从更改他们的查询语法,到更改 ER_GENERATED_COLUMN_VARIABLES 错误代码,根据用户具体情况而定。
如果用户试图在生成列中使用变量名称,他们可以采取以下措施来解决ER_GENERATED_COLUMN_VARIABLES错误:
1. 改变生成列的处理语句,从而舍弃用变量,改用直接的值
2. 将变量符号替换成值内容。在临时表,子查询中使用变量,然后重新构建生成列的表达式
3. 如果语义上存在条件逻辑,考虑将MySQL生成列与复杂的MySQL函数结合起来进行使用
总而言之,如果用户希望解决ER_GENERATED_COLUMN_VARIABLES错误,他们可能进行一些简单调整,以将变量放置在允许变量使用的地方,例如临时表,子查询中。