2015-07-30 2 views
0

По умолчанию: primary key defination Уникально.первичный ключ таблицы mysql не выполнен

В моей базе данных у меня есть:

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

это, как я создаю таблицу в моем database..where первичного ключа ID и адрес электронной почты. Это означает, что значение id и email должно быть уникальным. сейчас, Вставляю значения;

mysql> INSERT INTO student (id,name,email) VALUES(1,"Vivek","x[email protected]"); 
Query OK, 1 row affected (0.06 sec) 

затем снова я ставлю ту же запись:

mysql> INSERT INTO student (id,name,email) VALUES(1,"Vivek","[email protected]"); 
ERROR 1062 (23000): Duplicate entry '[email protected]' for key 'PRIMARY' 

теперь держать идентификатор это же и изменить значениеэлектронной

mysql> INSERT INTO student (id,name,email) VALUES(1,"Vivek","[email protected]"); 
    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

Это сложный ключ. MySQL и вся база данных берут оба столбца для проверки уникальности. – starko

ответ

1

первичный ключ (идентификатор, адрес электронной почты) означает составной первичный ключ. Комбинация уникальная и необязательно отдельные столбцы

+0

так, как я могу сохранить это два поля в качестве уникального ключа? – Salini

0

Вы использовали здесь composite key, что означает, что их комбинированное значение будет уникальным, а не отдельным. Если вам нужны уникальные значения для каждого, тогда вы должны использовать UNIQUE constraint check при создании таблицы:

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

Мне нужен идентификатор и адрес электронной почты как уникальный..так, почему вы поместили имя как уникальное ??? – Salini

+0

Это была опечатка, отредактировав ответ –

+0

, пожалуйста, отредактируйте еще раз. – Salini

Смежные вопросы