看板 Database 關於我們 聯絡資訊
※ 引述《MrMarcus (請勿忘記密碼)》之銘言: : 看來似乎很多人都不曉得mysql有foreign key constrain喔? : 在建立資料表的時候只要選用Innodb作為資料表格式(很多狀況下新建立 : 的資料表格式是myisam,這種格式就沒有foreign key constrain了), : 不但有transaction功能也有foreign key constrain,而且這從mysql 3.2x : 的時代就有了(至少兩三年以上),不是最近的事情。 : 你所說的B資料表的記錄參照到A資料表,當A資料表某筆記錄被刪掉,造成 : B資料表中參照到該被刪資料的記錄都變成無主孤魂的問題,就是要靠 : foreign key constrain來處理(當然你也可以在應用程式的層級自己寫 : 程式碼處理這個問題,但是在資料庫層級做好各資料表之間的關連與限制 : 是好的,而且省事多了)。設定正確的話,你可以有以下選擇 應該修正一下你所說的foreign key constraint. 在資料庫理論中,我們所講的constraint是提供限制, 它禁止某個動作,但是它並不會除了禁止之外,額外執行一些程序. Foreign key constraint (reference constraint) 的本意是, 若要刪掉的記錄是被參考的,就不能夠刪掉. 你之後所提的刪掉某記錄,就把參考該記錄的其他記錄刪掉, 這不是foreign key constraint,而是trigger. -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.160.214.21