postgres可以返回参与查询的表名吗?

我想创build一个快速的中间件函数来检查一个sqlstring(可以是select / insert / update / delete),并提取查询中参与表的名字。

对于特定的表格,我可以根据应用程序的权限定义来添加中间件function。

我看到select语句可以使用views并从information_schema.view_table_usage中提取信息。 我可以提取这个信息为任意的SQL?

基本上你只能检查返回数据。 但是:让我们假设以下查询…

SELECT function(); 

函数()是一个黑匣子…它可以触摸任何地方的任何东西。 所以,你可以检查返回的数据,也许可以识别一个表,但是你当然不会看到在查询中使用了什么来实际得到结果。