根据: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);
现在它也给出了相同的结果
答案 0 :(得分:1)
主键(id,email)表示复合主键。这种组合是独一无二的,不一定是单独的列
答案 1 :(得分:0)
您在这里使用了composite key
,这意味着它们的组合值将是唯一的,而不是独立的。如果您希望每个值都有唯一值,则必须在创建如下表格时使用UNIQUE constraint check
:
CREATE TABLE student (id INT unique,
email VARCHAR(20),
primary key(id,email));