2009-09-01 10 views
0

テーブルに2つ以上の一意のフィールドを持つことはできませんか、ここで何か問題がありますか?カントはユニークなフィールドです!

私は、ユーザ名の1つの一意のキーを持っていると私はあまりにも、電子メールのためにそれをしたいが、私は

#1062 - Duplicate entry '' for key 'email'

alter table users 
add unique (email) 

TBL取得:それはあなたを語っています

`id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, 
`username` varchar(255) NOT NULL, 
`password` varchar(40) NOT NULL, 
`email` varchar(100) NOT NULL, 
`registered` int(11) unsigned NOT NULL DEFAULT '0', 
`is_active` tinyint(1) NOT NULL DEFAULT '1', 
PRIMARY KEY (`id`), 
UNIQUE KEY `username` (`username`) 

答えて

4

すでに非持っています電子メールフィールドの一意のエントリ、つまり値 ''(空文字列)

0

複数の一意のフィールドを持つことができます。

電子メールフィールドのデータに関してエラーが発生していると思われます。 (あなたは ''の値を持つ複数の行があると思います)

2

複数の行のemail列に同じ値(つまり、'')があります。つまり、その列にUNIQUEという制約を付けることはできません。

UNIQUEがNULLを許可するため、現在の列が''の場合は列をNULLにしてから値をNULLに更新し、次にUNIQUEという制約を作成します。

ALTER TABLE users MODIFY email VARCHAR(100); 

UPDATE users SET email = NULL WHERE email = ''; 

ALTER TABLE users ADD UNIQUE KEY (email); 

なぜ、電子メールの列に値''がありますか?それは有効なメールアドレスではありません。

+1

とビルは30Kポイントを持っている、と私は5 – SquareCog

+0

私は知らないしている理由はここにある - その答えあたりの平均ポイントは次のとおりです。それらを見つけるために「=」

をNULLを:

は覚えておいてください36.22。回答あたりの平均ポイントは30.51です。 –

0

値も一意ではないため、一意の標準で判断される場合は、2つの電子メール行は重複しません。

1

これは、少なくとも2つのレコードに空のメールがあることを意味します。 !

SELECT id FROM users WHERE email= ''; 
関連する問題