gpt4 book ai didi

PHP/MYSQL - 如何在应用程序中处理数据库级约束

转载 作者:搜寻专家 更新时间:2023-10-30 19:54:03 26 4
gpt4 key购买 nike

我已经查看并看到了相关问题,即在应用程序中处理数据库约束与 native 数据库约束的一般问题,但我的问题更加尖锐和具体,关于如何处理用 PHP 编写的应用程序逻辑中的 native mysql 约束。

在其他语言/数据库包装器中(例如 ADO.NET),您将数据库交互放在 try/catch 中,它会抛出一个适当的异常,php 是否属于这种情况?

此外,使用严格的 ORM 是否不需要数据库级别的约束?

最佳答案

try/catch block 的伟大神话是,程序员将生成非常健壮的代码,并且实际上能够从失败的数据库查询中恢复。但是从数据库错误中恢复的能力取决于首先出现的错误类型——如果存在 sql 语法错误,该代码是来自用户输入查询,还是来自产生询问?如果它来自代码,而不是用户,那么再次调用代码只会再次产生相同的错误,因此使用 try/catch block 从一开始就注定要失败,查询永远不会运行。这通常是您从在 Web 服务器上运行的 PHP 脚本中获得的代码类型,您运行一个查询,它失败了,您升级失败并放弃。另一方面,如果您正在用 PHP 编写交互式应用程序并且您需要正确处理数据库错误,例如试图通过随机变异(一个非常奇怪的例子,但无论如何)进化有效 SQL 语句的遗传算法,那么您将从 try/catch block 中获得一些好处。

这也适用于数据库级约束。如果您有一些需要优雅地处理约束违规的长期运行的应用程序,那么您将不得不自己构建这种健壮性。但我想很少有人以这种方式使用 PHP,99% 的 php 都用于转储网页,各种包装器和 ORM 在他们的设计中反射(reflect)了这一点。 .NET 更有可能用于构建需要错误恢复逻辑的独立应用程序类型。

这又回到了原始问题的变体,何时使用或为什么使用数据库约束?当您具有高度动态的数据库结构时,它们最有用,其中表之间的关系在编译时未知,即当新表作为应用程序本身的一部分创建或修改时删除。对于庞大的数据仓库、数据挖掘或弦理论,您可能需要它。

关于PHP/MYSQL - 如何在应用程序中处理数据库级约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4904945/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com