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

id の代わりに「mc_userName」を主キーにしないのはなぜですか? この投稿で説明されているように、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 に答える