课程
/数据库
/MySQL
/与MySQL的零距离接触
为什么删除这个列上的索引就删除了唯一约束
2018-01-11
源自:与MySQL的零距离接触 3-7
正在回答
创建唯一索引保证了往表中插入重复索引列值的操作都会失败。如果一个单独的sql语句试图往表中插入包含重复索引列值的数据行,sql server将不会插入以上所有行。例如,当一个insert操作试图把从表A中取出的20行插入到表B,而其中的10行跟索引列值重复的话,默认情况下以上20行都不会被插入。然而,如果把索引对应的 “忽略重复键”开关打开的话,包含重复数值的行不会被插入,而非重复数值行会被插入。也就是说,其中的10行会被插入。
约束则没有这一开关,因此定义了一个约束之后,只要有与定义列重复值的行,插入都将被拒绝。
我的个人看法是,索引和约束本质上是相同的,可能区别也就在于此。
举报
本课程涵盖全部MySQL数据库的基础,学习MySQL数据库的基础知识