在MySQL中主要有innodb引擎提供外鍵支持,能夠利用外鍵實現級聯更新,刪除(沒有插入)。
使用innodb引擎,在創建外鍵的時候,要求父表必須有對應的索引,子表在創建外鍵的時候也會自動創建對
應的索引。在創建索引的時候,可以指定在刪除、更新父表時,對子表進行的相應操作,包括RESTRICT、
NO ACTION、SET NULL和CASCADE。其中RESTRICT和NO ACTION相同,是指在子表有關聯記錄的情況
下父表不能更新;CASCADE表示父表在更新或者刪除時,更新或者刪除子表對應記錄;SET NULL則是表示
父表在更新或者刪除的時候,子表的對應字段被SET NULL。 因為只有InnoDB引擎才允許使用外鍵,所以,
我們的數據表必須使用InnoDB引擎。下面是一個例子:
mysql> create database foreignkey ;
Query OK, 1 row affected (0.00 sec)
mysql> create table foreignkey.foreign (
-> id int not null auto_increment,
->)engine=innodb;//創建一個主表,只含有id主鍵
Query OK, 0 rows affected (0.09 sec)
mysql> create table foreignkey.foreign (
-> id int not null auto_increment,
-> fid int not null,
-> content varchar(255) not null,
-> primary key(id),
//這裡定義fid關聯表mian的id主鍵 采取級聯更新刪除操作
-> foreign key (fid) references main(id) on update cascade
-> on delete cascade)engine=innodb;//創建一個含有外鍵的表
Query OK, 0 rows affected (0.09 sec)
插入幾條數據,省略...