I have a basic users
table I want to create in MySQL.
I do not want duplicate emails or duplicate usernames appearing in the database.
1.
UNIQUE (username), UNIQUE (email),
2.
UNIQUE KEY (username), UNIQUE KEY (email),
3.
CONSTRAINT ucons_login UNIQUE (username, email),
I assume some of these are synonymous, yet I've been reading conflicting information online and was seeking confirmation.
I hope someone can assist.
The 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;
1 and 2 are identical - both create two unique indexes, one for each key. #3 only creates one unique index across both keys, so no combination of username and email can be duplicated, but for example, a username could be duplicated as long as a different email was used.
Sounds like you probably want either of the first two. UNIQUE and UNIQUE KEY are equivalent.