【发布时间】:2012-03-01 09:01:26
【问题描述】:
我有一个基本的users 表,我想在 MySQL 中创建。
我不希望数据库中出现重复的电子邮件或重复的用户名。
- 在创建表时防止这种情况的最佳方法是什么?
- 以下两者有什么区别:
1.
UNIQUE (username), UNIQUE (email),
2.
UNIQUE KEY (username), UNIQUE KEY (email),
3.
CONSTRAINT ucons_login UNIQUE (username, email),
我认为其中一些是同义词,但我一直在网上阅读相互矛盾的信息并寻求确认。
希望有人能提供帮助。
SQL:
CREATE TABLE users (
user_id INT UNSIGNED NOT NULL AUTO_INCREMENT,
username VARCHAR(30) NOT NULL,
pass CHAR(40) NOT NULL,
first_name VARCHAR(20) NOT NULL,
last_name VARCHAR(40) NOT NULL,
email VARCHAR(60) NOT NULL,
registration_date DATETIME NOT NULL,
user_level TINYINT(1) UNSIGNED NOT NULL DEFAULT 0,
active CHAR(32),
PRIMARY KEY (user_id),
UNIQUE (username),
UNIQUE (email),
INDEX login (email, pass),
INDEX full_name (last_name, first_name)
) ENGINE=INNODB;
【问题讨论】:
-
ps:email,pass 的索引可能只会让事情变慢。电子邮件的唯一约束也可以用作普通索引。电子邮件上的选择最多将返回 1 行,因此无需在传递时也索引。
标签: mysql database-design unique create-table unique-constraint