2017-02-16 14 views
0

В моей таблице тузд я дал первичный ключ дляMysql Первичный ключ не работает?

id (int)(auto_incremet) 
mobile_number(bigint) 
email(varchar) 

, но я могу ввести тот же адрес электронной почты и номер мобильного телефона снова. он не возвращает ошибку. Я хочу, чтобы номер электронной почты и номер мобильного телефона был уникальным в моей таблице. Но дублирующиеся значения также допускаются даже после установки первичного ключа.

кода я использовал, был

create table sample(id int(11) auto_increment, 
      mobile bigint(20),email varchar(50),primary key(id,mobile,email)); 

при описании показан, как первичный ключ для всех трех ..

где я ошибусь .. предложить мне гуманный пожалуйста .. Спасибо

+0

Похоже, есть ошибка синтаксиса в вашем файле 'создать table' заявление. – yeputons

+0

yup !! создать таблицу отсутствует закрывающая скобка :-) –

+0

я ее обновил .. на самом деле ошибка, когда я вставляю значения – Jithin

ответ

3

То, что у вас есть, только сочетаниеid, mobile_number и email обязательны для заполнения.

Используйте id в качестве первичного ключа и установить дополнительные ограничения уникальности по столбцам email и mobile_number:

CREATE TABLE my_db.sample (
    id INT NOT NULL AUTO_INCREMENT, 
    mobile_number BIGINT(20) NULL, 
    email VARCHAR(45) NULL, 
    PRIMARY KEY (id), 
    UNIQUE INDEX mobile_number_UNIQUE (mobile_number ASC), 
    UNIQUE INDEX email_UNIQUE (email ASC)); 
+0

Спасибо .. .. любые предложения добавить уникальную к существующей таблице? например, таблица изменений – Jithin

+0

['CREATE UNIQUE INDEX ...'] (https://dev.mysql.com/doc/refman/5.7/en/create-index.html) –

0
CREATE TABLE sample(id INT(11) AUTO_INCREMENT, 
      mobile BIGINT(20),email VARCHAR(50),PRIMARY KEY(id,mobile,email)); 

Последнее лицо вашего SQL отсутствует скобки

3

Здесь вы создаете первичный ключ, используя комбинацию id, mobile и email. Таким образом, в соответствии с определением первичного ключа эти три атрибута (id, mobile, email), объединенные, используемые для различения любых двух строк и id для каждой строки, уникальны, поскольку он установлен на автоматическое увеличение, поэтому даже если адрес электронной почты и мобильный телефон значения для двух или более строк одинаковы, комбинация id, mobile и email уникальна.

Для того, чтобы получить то, что вы хотите, вы можете сделать, как этот

CREATE TABLE sample (
    id INT NOT NULL AUTO_INCREMENT, 
    mobile_number BIGINT(20) NULL UNIQUE, 
    email VARCHAR(50) NULL UNIQUE, 
    PRIMARY KEY(id) 
); 
1

primary key(id,mobile,email) означает, что кортеж из этих трех столбцов является первичным ключом. Это означает, что все кортежи в таблице должны быть различны, т.е. вы не можете иметь два ряда с одинаковым idиmobileиemail. Тем не менее, это прекрасно, если две строки имеют одинаковые email, имея разные id.

Если вы хотите, чтобы каждый столбец должен быть уникальным, вы должны указать, что отдельно для каждого столбца с UNIQUE constraint on a column

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

  • Нет связанных вопросов^_^