MySQL里的外键作用是什么
发布时间:2022-03-13 14:51:25 所属栏目:MySql教程 来源:互联网
导读:给大家分享一下MySQL中的外键作用是什么,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨吧! MySQL外键的作用: 保持数据一致性,完整性,主要目的是控制存储在外键表中的数据。使两张表形成关联,外键只能引用外表中列的值! 分别插入数据到两个
给大家分享一下MySQL中的外键作用是什么,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨吧! MySQL外键的作用: 保持数据一致性,完整性,主要目的是控制存储在外键表中的数据。使两张表形成关联,外键只能引用外表中列的值! 分别插入数据到两个表中。 我们把example2中的stu_id和course_id称为example2表的外键,example1是父表,example2是字表,两个表形成关联,必须字表的数据删除后,才能删除父表中的对应数据 现在我们来删除example1中的一条数据 delete from example1 where stu_id=2; 会发现报错 ERROR 1451 (23000): Cannot delete or update a parent row: a foreign key constraint fails (`test`.`example3`, CONSTRAINT `f_ck` FOREIGN KEY (`stu_id`, `course_id`) REFERENCES `example2` (`stu_id`, `course_id`)) 因为example2中的数据关联了example1的数据,这样是删不了的,达到了外键的作用; 事件触发限制: on delete和on update , 可设参数cascade(跟随外键改动), restrict(限制外表中的外键改动),set Null(设空值),set Default(设默认值),[默认]no action 我们来看看事件触发限制是干嘛的。。。 我们先删除外键,然后重新建立外键带上事件触发限制 alter table example2 drop foreign key f_ck; alter table example2 add CONSTRAINT `f_ck` FOREIGN KEY (`stu_id`, `course_id`) REFERENCES `example1` (`stu_id`, `course_id`) ON DELETE CASCADE ON UPDATE CASCADE; 我们先查看一下数据 这时example1和example2中的stu_id和course_id都是1, 再来修改example1表中的数据看看 update example1 set stu_id=3,course_id=3 where stu_id=1; 再来查看数据 发现没,example1和example2中的stu_id和course_id都变成了3 我们在来删除example1表中的数据 delete from example1 where stu_id=3; 会发现可以删除,而且example2中的数据也没有了; 其实啊,外键就这个作用,保持数据一致性,完整性,是不让改还是一起改,由事件触发器决定; 看完了这篇文章,相信你对MySQL中的外键作用是什么有了一定的了解,想了解更多相关知识,感谢各位的阅读! (编辑:晋中站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |