下面举个例子说明一下有关情况。
假设现在要建立"学生表"与"成绩表"基于"学号"字段的一对多参照完整性关系。如果学生表中存有学号为001、002两条学生记录,成绩表分别记录有学号为001、002、003的同学成绩记录,因为学生表中并未有学号为003的同学记录,建立表间参照关系时,系统就会检测出存在不符合规范的记录,进而报错并放弃执行有关 *** 作。
那么问题如何解决呢?我们可以先为"学生表"添加一条学号为003的学生记录、或者删除"成绩表"中学号为003的成绩记录、又或者干脆将两张表内的记录都删除掉,这样再建立它们之间的参照完整性关系就不会有问题了。初始界面:工具-----关系------单击工具栏 显示表 -----然后就有你要创建的课程和成绩 ------直接拖动能够联系在一起的字段到另一个表中对应字段,会跳出一个提示框,勾选实施参照完整性就ok啦提示的很清楚嘛,因为你的表里现有的数据不符合你的参照关系。
先将表里不完整的数据补充完整,再参照,
或者空表参照,然后在写入数据,此时如果数据不完整会有提示,保存不了的。
祝你成功!在符合下列所有条件时,可以设置参照完整性:来自于主表的匹配字段是主键或具有唯一索引。相关的字段都有相同的数据类型。但是有两种例外情况:“自动编号”字段可以与“字段大小”属性设置为“长整型”的“数字”字段相关;“字段大小”属性设置为“同步复制 ID”的“自动编号”字段可以与一个“字段大小”属性设置为“同步复制 ID”的“数字”字段相关。两个表都属于同一个 Microsoft Access 数据库。如果表是链接的表,它们必须是 Microsoft Access 格式的表,并且必须打开存储此表的数据库以设置参照完整性。不能对数据库中的其他格式的链接表实施参照完整性。使用参照完整性时要遵循下列规则:不能在相关表的外键字段中输入不存在于主表的主键中的值。但是,可以在外键中输入一个 Null 值来指定这些记录之间并没有关系。例如,不能为不存在的客户指定订单,但通过在“客户ID”字段中输入一个 Null 值,则可以有一个不指派给任何客户的订单。如果在相关表中存在匹配的记录,则不能从主表中删除这个记录。例如,如果在“订单”表中有订单分配给某一雇员,就不能在“雇员”表中删除此雇员的记录。如果某个记录有相关的记录,则不能在主表中更改主键值。主副表位置掉反了。
在编辑关系对话框的左边 “表/查询(T)”下拉框选择 表2,右边 “相关表/查询(R)”下拉框选择 表3,两个表的关联字段都是“客户ID”按“确定”按钮即可。
请注意:
实施参照完整性前,记得要检查表3中“客户ID”字段是否有在表2中“客户ID”字段中不存在的客户ID号码,如果有必须将该记录删除,否则实施参照完整性时将会报错。
建议实施参照完整性前,先运行下列SQL *** 作查询,删除孤立记录:
DELETE FROM 表3 WHERE 客户ID NOT IN (SELECT 客户ID FROM 表2)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)