mysql數據庫 外鍵,如何在MySQL中設置外鍵約束以及外鍵的作用?
外鍵的作用:外鍵主要用來保證數據的完整性和一致性,便于關系數據的日常維護。是兩張關系表中的主表數據修改或刪除是自動操作字表中的數據。(外鍵并不是費用不可,通過程序邏輯上的操作完全可以替代)
注意事項:
1、兩個表必須是InnoDB表,MyISAM表暫時不支持外鍵
2、如果在較早的版本(4.1.2以前)則需要顯示建立外鍵列必須建立了索引
3、外鍵關系的兩個表的列必須是數據類型相似。比如int和tinyint可以,而int和char則不可以
外鍵約束使用最多的兩種情況:
1)父表更新時子表也更新,父表刪除時如果子表有匹配的項,刪除失敗;
2)父表更新時子表也更新,父表刪除時子表匹配的項也刪除。
前一種情況,在外鍵定義中,用ON UPDATE CASCADE ON DELETE RESTRICT;
后一種情況,可以使用ON UPDATE CASCADE ON DELETE CASCADE。
舉例說明:用最常見的場景:文章表,和分類表;
創建外鍵約束:
ALTER TABLE `article`ADD CONSTRAINT `fk_1` FOREIGN KEY (`category_id`) REFERENCES `category` (`id`);
現在刪除分類表中的一條數據:
文章表添加一條數據:
這樣是不是就保證了文章表里的分類ID 都能在分類表找到對應的名稱啦?
下面我們刪除外鍵重新創建: