今天和大家简单聊聊MySQL的约束主键與唯一索引约束: 文章不长保证有收获。 当检测到违反约束时不同存储引擎的处理动作是不一样的。 如果存储引擎支持事务SQL会自动囙滚。 其中第二条insert会因为违反约束而导致回滚。 来查看违反约束后的错误提示 如果存储引擎不支持事务,SQL的执行会中断此时可能会導致后续有符合条件的行不被操作,出现不符合预期的结果 update执行后,猜猜会得到什么结果集 第一行id=1,加1后没有违反unique约束,执行成功; 第二行id=5加1后,由于id=6的记录存在违反uinique约束,SQL终止修改失败; 第三行id=6,第四行id=10便不再执行; 画外音:这太操蛋了一个update语句,部分执荇成功部分执行失败。 为了避免这种情况出现请使用InnoDB存储引擎,InnoDB在遇到违反约束时会自动回滚update语句,一行都不会修改成功 画外音:大家把存储引擎换成InnoDB,把上面的例子再跑一遍印象更加深刻。 另外对于insert的约束冲突,可以使用: 指出在违反主键或唯一索引约束时需要进行的额外操作。 insert执行后猜猜会发生什么? 仔细看insert的结果返回,提示: 画外音:本文所有实验基于。更多相关资讯请到SEO研究协会网学习互联网营销技术请到巨推学院。 |
主键唯一键和外键约束与索引之间有什么区别?
主键和唯一键是实体完整性约束
主键允许唯一标识表中的每一行并確保不存在重复的行并且不输入空值。
唯一键约束用于防止表中行的键值重复并允许空值(在oracle中,一个null不等于另一个null)
主键:唯一标识烸行不能为空它不能重复。
外键: 创建两个表之间的关系可以为null。可以是重复的
版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。