如何使用适当的引用从 MySQL 5.7 information_schema.columns 获取默认列值?

How to get a default column value from MySQL 5.7 information_schema.columns with appropriate quoting?

我维护 Beekeeper Studio,一个开源 SQL GUI。

我在 MySQL 5.7 中遇到 information_schema.columns 的问题。

当 运行:

select * from information_schema.columns where table_name = ?`

它returns是COLUMN_DEFAULT,但它似乎不区分变量(例如CURRENT_TIMESTAMP)和字符串'foo'。

有什么地方可以通过适当的引用获得 'real' 默认值?

我的期望:

CURRENT_TIMESTAMP 'foo'

不幸的是,INFORMATION_SCHEMA 中没有可以在 MySQL 5.7 中告诉您这一点的元数据。您只需要知道对于 DATETIME 或 TIMESTAMP 列,CURRENT_TIMESTAMP 是一个特例。

它在代码中被视为特殊情况,因此如果您使用 SHOW CREATE TABLE,它会输出文字字符串“CURRENT_TIMESTAMP”而不是引用的日期时间值。

https://github.com/mysql/mysql-server/blob/5.7/sql/sql_show.cc#L1402-L1411