[英]mysql how to use two field as primary key and unique
在 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 和电子邮件)具有唯一性?
由于我对您的要求的理解是正确的,您必须添加到唯一索引:
alter table student add unique unique_index (user_id);
alter table student add unique unique_index_email (email);
您的语句将创建一个索引,其中 user_id 和 email 的组合是唯一的!
你可以像这样使用。 这里每个唯一的索引名称都应该不同。
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");
谢谢你。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.