mysql表主键未执行

时间:2015-07-30 07:22:21

标签: mysql sql

根据:primary key defination它是独一无二的。

在我的数据库中,我有:

:create database college;
:use college;
:CREATE TABLE student (id INT, name VARCHAR(20), email VARCHAR(20),primary key(id,email));

这就是我在数据库中创建表的方法。其中主键是id和email。 这意味着,id和email的值必须是唯一的。 现在, 我插入了值;

mysql> INSERT INTO student (id,name,email) VALUES(1,"Vivek","xuz@abc.com");
Query OK, 1 row affected (0.06 sec)

然后我再次输入相同的条目:

mysql> INSERT INTO student (id,name,email) VALUES(1,"Vivek","xuz@abc.com");
ERROR 1062 (23000): Duplicate entry '1-xuz@abc.com' for key 'PRIMARY'

现在我保持 ID 相同并更改电子邮件

 mysql> INSERT INTO student (id,name,email) VALUES(1,"Vivek","hello@gmail.com");
    Query OK, 1 row affected (0.06 sec)

它被插入..为什么?我将id,email设置为主键..那么为什么这两列不能正常工作?

我说:

CREATE TABLE student (
  s_id INT UNSIGNED NOT NULL AUTO_INCREMENT,
  name varchar(50),
  email varchar(50),
  PRIMARY KEY (s_id,email)
);

alter table student add constraint case unique (s_id,email);

现在它也给出了相同的结果

2 个答案:

答案 0 :(得分:1)

主键(id,email)表示复合主键。这种组合是独一无二的,不一定是单独的列

答案 1 :(得分:0)

您在这里使用了composite key,这意味着它们的组合值将是唯一的,而不是独立的。如果您希望每个值都有唯一值,则必须在创建如下表格时使用UNIQUE constraint check

CREATE TABLE student (id INT unique, 
email VARCHAR(20),
primary key(id,email));