其他分享
首页 > 其他分享> > 5.2.3参照完整性—内容提要

5.2.3参照完整性—内容提要

作者:互联网

参照完整性的本质

即:要求子表的某字段(外键),必须在父表的对应字段范围内取值(即写的字,一定要是字典里有的)。

即:改变字典的内容时,文章里对应的字将如何变化。

通常设置 [严格(默认)/级联/设空/设默认值],对应关键字(无/cascade/set null/set default),含义为(禁止修改字典/文章里的字跟着改/文章里的字设为空/文章里的字设为默认值)

设置参照完整性后,对两表的一切操作,都应满足上面第一点的描述,且按照第二点的规则工作。


 定义参照完整性

思想:

  1. 子表中选出一列做外键(默认会被添加普通索引),跟父表的索引(主键或唯一)关联。
  2. 可以起个名字,最好起个名字。(默认的名字不直观)
  3. 可以设置父表的删改规则,不指定默认“严格”。

语法:

使用:

可以把上面参照完整性的内容,当作字段,在创建表(create table)或修改表(alter table)的命令里使用。

CREATE TABLE t2 (xh char(1) DEFAULT NULL,km varchar(2) DEFAULT NULL,cj int DEFAULT NULL, KEY xh (xh),CONSTRAINT xh FOREIGN KEY (xh) REFERENCES t1 (xh))

alter table t2 add CONSTRAINT xh FOREIGN KEY (xh) REFERENCES t1(xh) ON DELETE cascade ON UPDATE cascade;

 删除的时候必须用到名字

alter table t2 drop CONSTRAINT xh;

小技巧:对于系统的自动命名,可以通过显示建表命令来查看名称。

show create table t1;

示例:

 t1为基本情况表,t2为成绩表

 

 

 内容:

 

 

 借助t1的xh字段,为t2的xh字段添加参照完整性规则:

alter table t2 add FOREIGN KEY (xh) REFERENCES t1(xh);

这是“默认命名”的“严格”规则。运行结果:

 

 

t2的xh字段在此时也被自动添加了普通索引:

 

 

  

分别尝试修改t2的最后一条记录和t1的最后一条记录,把学号改为'4',可以看到修改被拒绝:

 

 

 在提示中,也可以看到系统给出的默认约束名称:t2_ibfk_1。

把修改和删除规则改为级联。思想:删除,添加新的规则:

 

 修改父表时,可以看到子表内容也被修改:

 

标签:5.2,t2,xh,t1,字段,内容提要,完整性,KEY,table
来源: https://www.cnblogs.com/wanjinliu/p/15534586.html