Re: [SQL ] 恭賀開板順便發問
※ 引述《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
討論串 (同標題文章)
Database 近期熱門文章
PTT數位生活區 即時熱門文章