在MySQL数据库中,我有数据
create table student(user_id int(20) unsigned NOT NULL AUTO_INCREMENT,
name varchar(20),
email varchar(20),
primary key(user_id,email));
我想使用user_id
和email
字段应该是唯一值。
我还添加了
alter table student add unique unique_index (user_id,email);
但仍然接受所有条目
mysql> insert into student (name, email) values ("a", "aa", "aa");
Query OK, 1 row affected (0.06 sec)
mysql> insert into student (name, email) values ("a", "aa", "aa");
Query OK, 1 row affected (0.06 sec)
select * from student;
+---------+------+-------+
| user_id | name | email |
+---------+------+-------+
| 1 | a | aa |
| 2 | a | aa |
+---------+------+-------+
2 rows in set (0.00 sec)
如何将这些字段(ID和电子邮件)设为唯一?
答案 0 :(得分:1)
由于我对您的要求的理解是正确的,您必须添加到唯一索引:
alter table student add unique unique_index (user_id);
alter table student add unique unique_index_email (email);
您的语句将创建一个索引,其中user_id和email的组合是唯一的!
答案 1 :(得分:1)
你可以这样使用。这里每个唯一的索引名称都应该不同。
CREATE TABLE student(user_id INT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
NAME VARCHAR(20),
email VARCHAR(20),
PRIMARY KEY(user_id,email));
创建唯一索引。
ALTER TABLE student ADD UNIQUE unique_index1 (user_id);
ALTER TABLE student ADD UNIQUE unique_index2 (email);
插入数据:
INSERT INTO student (`name`, email) VALUES ("a", "aa");
执行以下SQL会产生错误。
INSERT INTO student (`name`, email) VALUES ("a", "aa");
谢谢。