在SQLite中,是否有一个等效的SELECT语句可以替代PRAGMA table_info('mytable')?

15
在SQLite中是否有与PRAGMA table_info('mytable')等价的SELECT语句?本质上,我想获得与PRAGMA返回相同的结果集:cid、name、type、notnull、dflt_value和pk。虽然我知道可以通过C函数sqlite3_table_column_metadata获取此信息的其他替代方法,但我更愿意使用SELECT语句。

1
我刚刚发现了这篇与我的问题类似的帖子,但它仍然没有回答我的问题:https://dev59.com/83E85IYBdhLWcg3wMAfc - Ziminji
1个回答

11
根据文档,没有副作用并返回结果的PRAGMA可以作为表值函数从普通的SELECT语句中访问。对于每个参与的PRAGMA,相应的表值函数与PRAGMA具有相同的名称,只是在其前面加上了一个7字符的"pragma_"前缀。PRAGMA参数和模式(如果有)被作为参数传递给表值函数。例如,可以使用index_info PRAGMA来读取索引中列的信息,如下所示:PRAGMA index_info('idx52'); 或者可以使用SELECT * FROM pragma_index_info('idx52'); 来读取相同的内容。这样做应该没问题吧?

sqlite> SELECT * FROM PRAGMA table_info(results); returns error: Error: near "(": syntax error - Katie
9
sqlite> SELECT * FROM pragma_table_info('results'); 这个命令应该可以运行,注意 pragma_table_info 的拼写(有下划线),表名需要用引号括起来。 - cuda12

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