在同一查询中运行多个命令有什么不好

时间:2020-10-15 15:48:59

标签: sql postgresql

我正在使用Sql-Server和Postgresql,通常当我需要运行多个命令时,我会打开一个新的连接,并且foreach所需的查询任务会运行一个命令(例如,插入1000行)。

如果我在单个命令中运行多个查询命令(查询以逗号分隔)与以前的行为相比,是否不好?

1 个答案:

答案 0 :(得分:0)

在一个调用中运行多个命令(并且能够执行)使您极易受到SQL注入的攻击。如果有人之后可以附加UPDATEDELETE语句,则任何查询(甚至是简单的SELECT)都将变得危险。这就是为什么许多实现(尤其是来自PHP)只是抑制提交嵌套查询的能力的原因。

据我所知,几乎没有正当理由这样做。通常情况下,连接保持打开状态,则呼叫本身所隐含的开销可以忽略不计。

如果您寻求的实际上是原子性,那么您想尝试“交易”;

如果您担心查询的复杂性并且不想每次都重新解析它们,则可以看一下“ prepared statement”和存储过程(或“ functions”)。使用最新版本的PostGreSQL)。