5

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

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

4

2 回答 2

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;
于 2012-11-25T22:56:13.050 回答
1

你为什么不把'mc_userName'作为主键而不是id?您必须将 mc_userName 的数据类型更改为 VARCHAR,如本文所述:MySQL 错误:没有密钥长度的密钥规范。或者,创建一个包含 id 和用户名的复合主键。

如果由于数据库的设计而无法执行此操作,请在查询中使用 EXISTS 关键字。在这里查看更多信息:http ://dev.mysql.com/doc/refman/5.0/en/exists-and-not-exists-subqueries.html

于 2012-11-25T22:31:09.507 回答