亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

外鍵可以引用非唯一索引嗎?

外鍵可以引用非唯一索引嗎?

繁華開滿天機 2019-12-03 15:53:54
我認為外鍵意味著單行必須引用單行,但是我正在查看某些表,但事實并非如此。表1在表2的列2上有一個具有外鍵約束的列1,但是在表2中有很多記錄在列2中具有相同的值。在column2上也有非唯一索引。這是什么意思?外鍵約束是否僅表示至少一條記錄必須存在,且在正確的列中具有正確的值?我認為這意味著必須有一個這樣的記錄(不確定空值是否適合圖片,但目前我對此不太擔心)。更新:顯然,此行為特定于MySQL,這是我所使用的,但我沒有在最初的問題中提及它。
查看完整描述

3 回答

?
海綿寶寶撒

TA貢獻1809條經驗 獲得超8個贊

從MySQL文檔:


InnoDB允許外鍵約束引用非唯一鍵。這是對標準SQL的InnoDB擴展。


但是,出于實際原因,要避免在引用表的非唯一列上使用外鍵。也就是說,在這種情況下“ ON DELETE CASCADE”的語義應該是什么?


該文檔進一步建議:


對非唯一鍵或包含NULL值的鍵的外鍵引用的處理沒有很好的定義(...)。建議您使用僅引用UNIQUE(包括PRIMARY)和NOT NULL鍵的外鍵。


查看完整回答
反對 回復 2019-12-03
?
神不在的星期二

TA貢獻1963條經驗 獲得超6個贊

您的分析是正確的;鍵不必是唯一的,約束將作用于匹配行的集合。通常這不是有用的行為,但是可能會出現您想要的情況。


查看完整回答
反對 回復 2019-12-03
  • 3 回答
  • 0 關注
  • 797 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號