Mysql

可以創建每個外鍵唯一的約束嗎?

  • December 20, 2021

MySql,Users.Id 上的 Table Repos Fk,一個使用者可以有多個 Repos 但是每個 Repo 必須有一個唯一的 Id,每個使用者而不是每個表,確保 Repos Id 對於給定的使用者 ID 唯一的最佳方法是什麼?

謝謝

與任何其他索引一樣,唯一約束可以轉換同一個表中的多個列 - 因此要實現我認為您所要求的,您需要在userId, repoId. 這將強制沒有使用者擁有多個具有相同標識符的 repos,但不會阻止另一個使用者擁有與我的一個相同 repoId 的記錄。

語法類似於ALTER TABLE table_name ADD CONSTRAINT constraint_name UNIQUE (userId, repoId);

或者您可以創建一個功能相同的唯一索引。請參閱何時應該使用唯一約束而不是唯一索引?有關這種相似性的更多討論以及何時可以選擇其中一個。

注意:充實您的問題以更詳細地描述您正在建模的內容以及您目前擁有的結構可能是一個好主意。可能通過聯結表的多對多關係更合適,但我不會深入研究它,因為在了解更多關於您的目標後,它可能很容易變得完全不相關。

引用自:https://dba.stackexchange.com/questions/305187