mysql 设置参照完整性

来源:互联网 发布:mac怎么更新显卡驱动 编辑:程序博客网 时间:2024/05/17 06:22
什么的参照完整性:
简单的来说,就是在A表里面有一组属性K(可以是多个)是A表的主键,在B表中有一组对应的属性F(也可以是多个),但F不是B表主键,则对于B表中每个元组(也就是每一行)在F上的值必须为空值或者等于A表中某个元组(某一行)的主键的值。其中A表被称为是被参照表,B表称为被参照表

在定义外键的时候要注意以下几点:
1)MySQL只在v3.23.34版本以后才引入外键的 。
2)MySQL v4.0版本以后,定义外键时会自动建立所以,所以在 v4.0 版本以前(含v4.0版本)必须手工定义索引。
3)相关联的字段必须采用类似的数据类型,或者说可转换的数据类型,当然相同类型是最好不过了。
4)参照表和被参照表必须是InnoDB表类型。如果不是InnoDB类型的表,则外键的定义会被忽略。

定义外键:
举例说明:
CREATE TABLE Class(    ClassID INT PRIMARY KEY)engine=innodb;CREATE TABLE Student(    ID INT PRIMARY KEY,    ClassID INT,    FROREIGN KEY (ClassID) REFERENCES Class(ClassID),    CONSTRAINT Student_ClassID_FK FROREIGN KEY (ClassID) REFERENCES Class(ClassID) )engine=innodb;


也可以用alter语句代替上面的这句 FROREIGN KEY (ClassID) REFERENCES Class(ClassID)。
在定义了表Student之后,使用alter:
 ALTER TABLE student ADD FROREIGN KEY (ClassID) REFERENCES Class(ClassID);


要删除这个外键要通过show create table tablename;来查看外键的constaint:
show create table Student;


然后使用带有DROP FOREIGN KEY 语句的ALTER TABLE命令:
ALTER TABLE Student DROP FOREIGN KEY Student_ClassID_FK;


    

0 0
原创粉丝点击