我有一個表稱爲enrollments
,看起來像這樣:如何創建第二個主鍵/化合物MySQL表鍵
enrollmentindex - which is table primary key
username - varchar(64)
shortname - varchar(64)
role - varcar(64)
我得離開enrollmentindex
關口,但想創建第二個primary key
(複合鍵)使用username
,shortname
和role
。
由於enrollmentindex
上存在密鑰,我無法創建新的複合密鑰。
嘗試:
ALTER TABLE enrollments ADD PRIMARY KEY(username,shortname,role)
- 導致錯誤代碼1068
。
ALTER TABLE enrollments DROP PRIMARY KEY, ADD PRIMARY KEY(username,shortname,role)
- 導致錯誤代碼1075
有表中沒有任何數據。
你需要有這樣一個複合主鍵的任何理由的東西嗎?應該可能爲PK創建一個自然鍵,併爲用戶名,短名稱,角色創建一個UNIQUE索引,而不是 – Noah
第二個'ALTER'命令應該可以工作。你使用的是哪個版本的MySQL?而且,正如諾亞所建議的那樣,「唯一索引」是一個更好的選擇。 –
5.3.13。這些領域的唯一索引,而不是主鍵,是正確的解決方案。 – jamesTheProgrammer