我有两个表tbluserlogindetail
和tblRoles
。
tbluserlogindetail
如下
CREATE TABLE `tbluserlogindetail` (
`LoginID` varchar(45) NOT NULL,
`Name` varchar(45) DEFAULT NULL,
`Password` varchar(45) DEFAULT NULL,
PRIMARY KEY (`LoginID`),
UNIQUE KEY `LoginID_UNIQUE` (`LoginID`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1$$
编辑doratesting
。tbluserlogindetail
;
我的第二个表tblRoles
如下
CREATE TABLE `tblroles` (
`RoleID` int(11) NOT NULL,
`LoginID` varchar(45) NOT NULL,
PRIMARY KEY (`RoleID`,`LoginID`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1$$
我尝试了以下方法为 tblroles
表中的 LoginID
列分配主键,但我不知道我哪里出错了,任何人都可以帮助我。
我已阅读文档,但无法纠正错误,因此请帮助我
ALTER TABLE tblroles
添加外键(loginid)
引用文献 tbluserlogindetail(loginid)
最佳答案
引用的列在引用的表中必须是唯一的。尝试以下选项之一:
tbluserlogindetail
上的主键是(ID, loginid)
,因此您可以使用它作为外键,而不是(loginid)
。这将要求您向tblroles
添加列tbluserlogindetail_ID
。- 尝试向
tbluserlogindetail
表的LoginID
列添加唯一索引。只有当它确实是唯一的时,这才有可能。
此外,为什么 tbluserlogindetail
上的主键定义为 PRIMARY KEY (ID, LoginID)
? ID
字段是一个自增字段,并且已经是唯一的。那么为什么还要将 LoginID 作为主键的一部分呢?我认为您需要回到表设计并重新考虑选择哪些列作为主键。
关于asp.net - 将外键应用于表时mysql中的错误代码1005,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7618296/