Related Documentation Download this Manual
PDF (US Ltr) - 40.8Mb
PDF (A4) - 40.9Mb
Man Pages (TGZ) - 294.0Kb
Man Pages (Zip) - 409.0Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb
Excerpts from this Manual

MySQL 8.3 Reference Manual  /  ...  /  How MySQL Deals with Constraints

1.6.3 MySQL 如何处理约束

MySQL 允许您在支持回滚的交易表和不支持回滚的非交易表之间工作。由于这个原因,在 MySQL 中的约束处理与其他 DBMS 略有不同。我们必须处理在非交易表中插入或更新了大量行时,如果出现错误,无法回滚的情况。

基本哲学是 MySQL 服务器尝试在解析语句时检测到任何错误,并尝试从执行语句时出现的错误中恢复。在大多数情况下,我们这样做,但不是所有情况。

当错误发生时,MySQL 的选项是停止语句的执行或尽可能地从问题中恢复并继续执行。默认情况下,服务器选择后一种方式。这意味着,例如,服务器可能将无效值强制转换为最近的有效值。

有多个 SQL 模式选项可用,以控制坏数据值的处理方式和是否在错误发生时继续执行语句或中止执行。使用这些选项,您可以配置 MySQL 服务器以类似其他 DBMS 的方式工作,即拒绝不良输入。SQL 模式可以在服务器启动时全局设置,以影响所有客户端。单个客户端可以在运行时设置 SQL 模式,以选择最适合其需求的行为。请参阅 第 7.1.11 节,“服务器 SQL 模式”

以下部分描述了 MySQL 服务器如何处理不同类型的约束。