mysql如何修改外鍵約束類型

INnoDB存儲引擎支持外鍵,外鍵約束類型有:

1.RESTRICT(mysql默認):拒絕更新或刪除(是拒絕更新還是刪除看外鍵的具體設置)主表被外鍵引用的列。

2.NO ACTION:同RESTRICT

3.SET NULL:更新或刪除主表對應列,會使子表對應列的值變成NULL(子表該列不能默認爲NOT NULL)。

4.CASCADE:聯動,即主表的改動會引發子表的改動。

5.SET DEFAULT:(InnoDB不支持)

主表是職員表,子表爲工資表且外鍵爲(`工資表_ibfk_1`,可以在創建表時設置或自動生成)

那麼,修改約束類型如下:

mysql> alter table `工資表` drop foreign key `工資表_ibfk_1`; //先刪除原來的外鍵。

mysql> alter table `工資表` 
add constraint `fk_2` foreign key `工資表`(`工號`) references `職員表`(`工號`)
on delete cascade on update cascade;//再用alter語句重新添加外鍵。

這裏發生了一件囧事,我想驗證級聯修改是否生效,沒注意到上面的語句是on delete cascade on update cascade,結果發現怎麼插入數據,子表都沒變化,硬是各種查找資料、動手驗證,終於一個小時後瞄了一眼這個語句,哭暈。。。。

疑問:能否直接用alter在原有基礎上修改外鍵呢?(就是直接省去drop這一步)

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章