外键约束方式(数据库)

上传人:小** 文档编号:164250793 上传时间:2022-10-24 格式:DOC 页数:4 大小:23.50KB
返回 下载 相关 举报
外键约束方式(数据库)_第1页
第1页 / 共4页
外键约束方式(数据库)_第2页
第2页 / 共4页
外键约束方式(数据库)_第3页
第3页 / 共4页
点击查看更多>>
资源描述
外键约束方式如果表 A 的主关键字是表 B 中的字段,则该字段称为表 B 的外键,表 A 称为主表,表 B称为从表。外键是用来实现参照完整性的,不同的外键约束方式将可以使两张表紧密的结合起来,特别是修改或者删除的级联操作将使得日常的维护工作更加轻松。这里以 MySQL 为例,总结一下 3 种外键约束方式的区别和联系。这里以用户表和用户组表为例,这是一个典型的多对一关系,多个用户对应于一个用户组。首先创建用户组表:创建用户组表createtablet_group(idintnotnull,namevarchar(30),primarykey(id);并插入两条记录:插入记录insertintot_groupvalues(1,Group1);insertintot_groupvalues(2,Group2);下面创建用户表,分别以不同的约束方式创建外键引用关系:1、级联(cascade)方式级联方式createtablet_user(idintnotnull,namevarchar(30),groupidint,primarykey(id),foreignkey(groupid)referencest_group(id)ondeletecascadeonupdatecascade);参照完整性测试insertintot_uservalues(1,qianxin,1);#可以插入insertintot_uservalues(2,yiyu,2);#可以插入insertintot_uservalues(3,dai,3);#错误,无法插入,用户组 3 不存在,与参照完整性约束不符约束方式测试insertintot_uservalues(1,qianxin,1);insertintot_uservalues(2,yiyu,2);insertintot_uservalues(3,dai,2);deletefromt_groupwhereid=2;#导致 t_user 中的 2、3 记录级联删除updatet_groupsetid=2whereid=1;#导致 t_user 中的 1 记录的 groupid 级联修改为 22、置空(setnull)方式置空方式createtablet_user(idintnotnull,namevarchar(30),groupidint,primarykey(id),foreignkey(groupid)referencest_group(id)ondeletesetnullonupdatesetnull);参照完整性测试insertintot_uservalues(1,qianxin,1);#可以插入insertintot_uservalues(2,yiyu,2);#可以插入insertintot_uservalues(3,dai,3);#错误,无法插入,用户组 3 不存在,与参照完整性约束不符约束方式测试insertintot_uservalues(1,qianxin,1);insertintot_uservalues(2,yiyu,2);insertintot_uservalues(3,dai,2);deletefromt_groupwhereid=2;#导致 t_user 中的 2、3 记录的 groupid被设置为 NULLupdatet_groupsetid=2whereid=1;#导致 t_user 中的 1 记录的 groupid 被设置为 NULL3、禁止(noaction/restrict)方式禁止方式createtablet_user(idintnotnull,namevarchar(30),groupidint,primarykey(id),foreignkey(groupid)referencest_group(id)ondeletenoactiononupdatenoaction);参照完整性测试insertintot_uservalues(1,qianxin,1);#可以插入insertintot_uservalues(2,yiyu,2);#可以插入insertintot_uservalues(3,dai,3);#错误,无法插入,用户组 3 不存在,与参照完整性约束不符约束方式测试insertintot_uservalues(1,qianxin,1);insertintot_uservalues(2,yiyu,2);insertintot_uservalues(3,dai,2);deletefromt_groupwhereid=2;法删除updatet_groupsetid=2whereid=1;#错误,从表中有相关引用法修改注:在 MySQL 中,restrict 方式与 noaction 方式作用相同。
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 办公文档 > 解决方案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!