如何在MySQL中查找生成的列定义

如何在MySQL中查找生成的列定义,mysql,mariadb,innodb,information-schema,Mysql,Mariadb,Innodb,Information Schema,我已向test employees数据库中的Palaries表添加了一个虚拟生成的列,如下所示: ALTER TABLE salaries ADD COLUMN salary_k int AS (salary / 1000); 现在,当我查询信息\u SCHEMA.COLUMNS时,EXTRA列会按预期显示VIRTUAL GENERATED,但是我如何获得生成列的详细信息,即在本例中(salary/1000)列\默认值显示NULL SHOW CREATE TABLE salaries显

我已向test employees数据库中的Palaries表添加了一个虚拟生成的列,如下所示:

ALTER TABLE salaries
    ADD COLUMN salary_k int AS (salary / 1000);
现在,当我查询
信息\u SCHEMA.COLUMNS
时,
EXTRA
列会按预期显示
VIRTUAL GENERATED
,但是我如何获得生成列的详细信息,即在本例中
(salary/1000)
<代码>列\默认值显示
NULL


SHOW CREATE TABLE salaries
显示了结果中的详细信息,但我希望将结果作为
信息\u SCHEMA
的更大查询的一部分,因此这对我不起作用

它位于
INFORMATION\u SCHEMA.COLUMNS
GENERATION\u EXPRESSION
列中

从:

GENERATION\u表达式

对于生成的列,显示用于计算列值的表达式


下面是一个更实际的答案:

SELECT column_name, generation_expression
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'salaries'

顺便说一句,通过将salary_k定义为int,如果salary不是偶数千,您将有有趣的行为。这只是一个测试,看看如何找到定义。我不使用
salary_k
列。在MySQL 5.5中找不到“GENERATION_EXPRESSION”,在5.7中添加了其他虚拟列。试图查找不存在的东西是没有意义的。