方法/步骤
1、首先我们创建出测试表,并在该表上创建一个唯一约束。可以看到默认约束的属性就是enable和validate
2、首先我们先来测试enable,我们往表里插入测试数据,当出现重复时数据库就报错了。这就是enable的特性。
3、那么我们将enable变成disable来测试一下,通过测试看到disable实际就是关闭了唯一约束的功能。
4、接下来说一下validate | novalidate 这两个属性。这两个属性是说当表里已存在数据的时候,我们创建的索引对不对这部分存在的数据做唯一性约束。先来通过下图实验看下validate,可见validate对我们的已有的数据进行了唯一性校验
5、再来看下novalidate,这里解释一下,为什么直接建唯一约束并且我也指定了novalidate(不对已有数据校验),但是依然报已有数据有重复记录。
因为在唯一性约束也是去创建一个唯一索引来实现的,所以在创建唯一索引时出发对原始数据的校验(novalidate不对创建唯一索引起效果)
所以我们必须先创建一个一般索引,再去创建这个唯一约束就不会报错了。
6、但是我再往这个表里插入记录,依然报错,也就是约束对新的记录还存在唯一性限制。