如何在MySQL中查找生成的列定义
我已向test employees数据库中的Palaries表添加了一个虚拟生成的列,如下所示:如何在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显
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中添加了其他虚拟列。试图查找不存在的东西是没有意义的。