MySQL唯一的列字符串

时间:2012-11-25 22:22:37

标签: mysql sql primary-key unique unique-key

目前我的数据库中有这个表:

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中的任何内置函数(在插入查询中,还是在其他地方)?

2 个答案:

答案 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