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

4
我已经在测试员工数据库的薪水表中添加了一个虚拟生成列,如下所示:
ALTER TABLE salaries
    ADD COLUMN salary_k int AS (salary / 1000);

现在我查询INFORMATION_SCHEMA.COLUMNS时,EXTRA列显示为VIRTUAL GENERATED,但是我如何获取生成列的详细信息,例如此例中的(salary / 1000)COLUMN_DEFAULT显示为NULLSHOW CREATE TABLE salaries显示结果的详细信息,但我想要将其作为INFORMATION_SCHEMA的更大查询的一部分,所以那对我不起作用。

顺便提一下,如果将salary_k定义为整数,在薪水不是整千时,你会得到有趣的结果。 - T Gray
这只是一个测试,看看我如何找到定义。我不需要 salary_k 列。 - isapir
2个回答

7

这个信息可以在 INFORMATION_SCHEMA.COLUMNS 的列 GENERATION_EXPRESSION 中找到。

根据文档:

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


这个 GENERATION_EXPRESSION 在MySQL 5.5中找不到,有哪些替代方案? - Smith
虚拟列在5.7中被添加。尝试查找不存在的内容是没有意义的。 - Barmar

3
以下是更实用的解答:
SELECT column_name, generation_expression
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'salaries'

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接