目前我的数据库中有这个表:
CREATE TABLE `twMCUserDB` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`mc_userName` text NOT NULL,
`mc_userPass` text NOT NULL,
`tw_userName` text NOT NULL,
`tw_userPass` text NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=latin1;
我希望列mc_userName
也是唯一的(就像id
),但mc_userName
必须是字符串。
我试图让它也成为主键,但这不起作用。
当我向表中添加数据时,首先要检查mc_userName
是否已存在?或者我可以使用MySQL中的任何内置函数(在插入查询中,还是在其他地方)?
答案 0 :(得分:6)
只需添加UNIQUE
`mc_userName` text NOT NULL UNIQUE,
或
CREATE TABLE `twMCUserDB` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`mc_userName` text NOT NULL,
`mc_userPass` text NOT NULL,
`tw_userName` text NOT NULL,
`tw_userPass` text NOT NULL,
PRIMARY KEY (`id`),
CONSTRAINT tb_uq UNIQUE (mc_userName)
) ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=latin1;
答案 1 :(得分:1)
为什么不将'mc_userName'作为主键而不是id?您将不得不将mc_userName的数据类型更改为VARCHAR,如本文所述:MySQL error: key specification without a key length。或者,创建一个包含id和username的复合主键。
如果由于数据库的设计而无法执行此操作,请在查询中使用EXISTS关键字。有关详细信息,请查看此处:http://dev.mysql.com/doc/refman/5.0/en/exists-and-not-exists-subqueries.html