1. 程式人生 > >Mysql 外來鍵 FOREIGN KEY

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型別外其他型別的表都忽略了外來鍵保持資料完整性的功能