ITEEDU

1.8.6. MySQL处理约束的方式

1.8.6.1. PRIMARY KEY和UNIQUE索引约束
1.8.6.2. 对无效数据的约束
1.8.6.3. ENUM和SET约束

使用MySQL,你可以使用允许回滚的事务表,以及不允许回滚的非事务表。因此,在MySQL中的约束处理功能与其他DBMS中的略有不同。在非事务性表中插入或更新大量行时,当出现错误以至于不能回滚所作的变更时,必须处理该情况。

其基本原理在于,在解析将要执行的语句的同时,MySQL服务器会尽量为检测到的问题生成错误信息,并会在执行语句的同时尽量恢复出现的错误。在大多数情况下我们均是这样作的,但不包括所有情况。

出现错误时,MySQL可选择中途中止语句,或尽可能恢复并继续执行语句。默认情况下,服务器将采取后一种路线。这意味着,服务器可能会强制将非法值变为最接近的合法值(例如)。

从MySQL 5.0.2开始,提供了数种SQL模式,使用它们,能够对如何接受可能为不良数据值的方式进行更好的控制,也能在出现错误时,对是否继续执行语句或放弃语句进行控制。使用这些选项,能够将MySQL服务器配置为更为传统的风格,类似于拒绝不恰当输入的其他DBMS。可以在运行时设置SQL模式,这样,各客户端就能选择与其需求最为贴切的行为。请参见5.3.2节,“SQL服务器模式”

在以下部分,介绍了使用不同约束类型的情况。