Mysql 外键 FOREIGN KEY

FOREIGN KEY 外键 (重点)

    1.    针对从表设置外键约束

    2.    数据的完整性

           当我们在从表插入数据时,如果外键值在主表中不存在,就会报错。

    3.    约束方式:

            3.1    级联约束(cascade)

                    create table tableName (

        id int not null,
        ...,
foreign key (设置的字段) references 主表(主键) on delete cascade on update cascade
    );
    在父表上update/delete记录时,同步update/delete掉子表的匹配记录


            3.2    置空约束 (set null)

                        create table tableName (

            id int not null,
            ...,
            foreign key (设置的字段) references 主表(主键) on set null on set null
        );
在父表上update/delete记录时,将子表上匹配记录的列设为null


             3.3    禁止约束(restrict)
                    create table tableName (
        id int not null,
        ...,
foreign key (设置的字段) references 主表(主键) on delete restrict on delete restrict
    );
    如果子表中有匹配的记录,则不允许对父表update/delete操作


    优点:保证数据一致性,完整性

    缺点:
        1.过多使用外键,会导致表过多,程序耗时和耗资源
2.在数据很大时,不适合用。因为在执行insert/update/delete 时都会去扫描此记录是否合格,这很耗资源和时间。
    注意:
除了InnoDB类型外其他类型的表都忽略了外键保持数据完整性的功能

猜你喜欢

转载自blog.csdn.net/Gx422954766/article/details/80983177
今日推荐