尽管唯一索引和唯一约束的功能相似,除了在声明、更改或销毁它们的语法之间的各种不同,还有在这两种的数据库对象之间的其它不同:
- 在 DDL 语句中,它们注册于或删除系统目录的不同表。
- 在 DML
语句中,在日志记录的表上启用唯一约束会在语句末尾被检查,但是唯一索引是一行一行的检查,从而防止可能潜在地违反指定列(或者对于多列列约束或索引是列列表)的唯一性的行的插入或更改。
例如,当您将值 1 、2 和 3 存储在具有 INT 列的日志记录表的行中,如果列
c 上有一个唯一索引,则对该表上指定的
SET c = c + 1 UPDATE 操作将发生错误而失败,但是如果该列是具有一个唯一约束的话,该语句会成功。