开发者社区 问答 正文

带安全网的SQL

我的公司有一个才华横溢,聪明的运营人员,他们非常努力。我想给他们一个SQL执行工具,以帮助他们避免在急忙时容易犯的常见的,易于检测的SQL错误。谁能建议这样的工具?详细信息如下。

运营团队的一部分职责是编写非常复杂的临时SQL查询。毫不奇怪,操作员有时会因为忙而在其编写的查询中犯错。

幸运的是,它们的查询都是不带数据更改SQL的SELECT,而且无论如何它们都在数据库的副本上运行。尽管如此,我们还是要防止它们运行的​​SQL错误。例如,有时错误会导致长时间运行的查询,从而减慢他们正在使用的重复系统的速度,并给其他人带来不便,直到我们找到罪魁祸首并杀死它为止。更糟糕的是,有时错误会导致表面上正确的答案,直到很久以后我们才发现,并因此而感到尴尬。

我们的开发人员还会在编写的复杂代码中犯错误,但是他们拥有Eclipse和各种插件(例如FindBugs),它们可以在键入时捕获错误。我想给运营商一些类似的东西-理想的情况是

SELECT U.NAME, C.NAME FROM USER U, COMPANY C WHERE U.NAME = 'ibell'; 在执行之前,它会说“嘿,您知道这是笛卡尔积吗?确定要这样做吗?” 不必很聪明-查找明显缺少的连接条件和类似的明显错误就可以了。

看起来TOAD应该执行此操作,但我似乎找不到任何有关此功能的信息。还有像TOAD这样的其他工具可以提供这种半智能错误纠正吗?

更新:我忘了提到我们正在使用MySQL。

问题来源于stack overflow

展开
收起
保持可爱mmm 2019-11-15 16:02:37 417 分享 版权
1 条回答
写回答
取消 提交回答
  • 通过使用非常少量的伪数据来建立示例数据库来构建它非常容易,该伪数据库将首先接收查询。将会发生几件事:

    您可能会收到一个SQL语法错误,由于它是一个小型数据库,因此不会加载太多数据库。 您可能会得到一个响应,该响应可以清楚地显示为包含一个或多个表中的每一行,这可能不是他们想要的。 满足上述条件的事情可能还可以,因此您可以针对生产数据库的副本运行它们。 假设您的架构变化不大并且也不是很奇怪,那么编写以上内容可能是解决问题的最快方法。

    2019-11-15 16:03:32
    赞同 展开评论