【问题标题】:Storing SQL Statements in the Database在数据库中存储 SQL 语句
【发布时间】:2011-01-28 10:19:37
【问题描述】:

我公司的一些开发人员认为,将 SQL 语句从生产代码中提取到一些集中存储中是个好主意。所以他们想出了将 SQL 语句存储在数据库中的想法,这样他们就可以像这样从数据库中调用数据:

$result = GetData(#querynumber, parameters, ...);

这是好的做法吗? sql 语句的集中存储是否有替代方案?准备好的语句不起作用,因为我们使用多个数据库,并且数据库名称将是 sql-statement 中的变量。

【问题讨论】:

  • 咆哮:我讨厌在只通过存储过程接触数据库的公司工作,特别是当他们在另一个部门有一个 DBA 必须批准并应用对这些过程的每一个更改时。
  • 这听起来像是不灵活的东西,并且会成为维护的噩梦。考虑改用 ORM 工具。
  • 如果您只需要处理对象和数据,那么将您的数据库纳入源代码控制就已经够难了...

标签: php mysql stored-procedures


【解决方案1】:

我以前也遇到过类似的想法,但我很确定这不是一个好主意。

首先,如果你编写了合理的模块化代码,那么大多数数据库的东西无论如何都应该在同一个地方,所以为什么要把它放到数据库中。 其次:如果您更改查询,您还应该记住,代码可能依赖于查询的某些细节,您将不得不在两个不同的地方开始进行更改。

恕我直言,在大多数情况下,将查询外部化到数据库中是没有意义的。只需为您的模型编写适当模块化、低耦合的代码,您应该会做得更好。

【讨论】:

    【解决方案2】:

    我就是这样做的。

    常用的sql连接表并获取结果应该在一个视图中。 常用的sql操作数据应该在存储过程中。

    不太可能在其他地方使用的专用 sql 在代码中很好。

    我个人不介意在代码中使用 $sql="SELECT field1, field2 FROM $view WHERE id=$param" 之类的代码。它是连接和分组的大块,将被重用,我认为不属于。

    但它们不属于查询表中的字符串。这就是视图和存储过程的用途。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-08-15
      • 1970-01-01
      • 2017-12-08
      • 1970-01-01
      • 1970-01-01
      • 2012-06-26
      • 1970-01-01
      • 2011-08-12
      相关资源
      最近更新 更多