我想创建一个快速中间件函数来检查sql字符串(可以是select / insert / update / delete),并在查询中提取参与表的名称。
对于特定的表,我将使用中间件函数根据应用程序的权限定义添加条件。
我看到select语句我可以使用views并从information_schema.view_table_usage中提取信息。我可以为任意sql提取此信息吗?
答案 0 :(得分:2)
基本上你只能检查返回数据。但是:让我们假设以下查询......
SELECT function();
function()是一个黑盒子......它可以触摸任何地方的任何东西。所以,你可以检查返回数据,也许可以识别一个表,但你肯定看不到,在查询中使用了什么来实际获得结果。