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

Email                          BlogName                                BlogTitle
abc@gmail.com                Coder's world                         What is coding?
abc@gmail.com                Sql world                             What is sql?

Теперь, если пользователь снова попытается ввести значения ('abc@gmail.com ',' Миры кодера ',' Что такое кодирование? '), Он / она не сможет это сделать. Но если пользователь пытается вставить другую комбинацию электронной почты, BlogName и BlogTitle, ему / ей будет разрешено это сделать.

Поскольку я новичок в Mysql, я не знаю, как это сделать, поэтому, пожалуйста, помогите мне это сделать. Моя структура таблицы: - введите здесь описание изображения

1
Gunjan 23 Дек 2015 в 08:32

3 ответа

Лучший ответ

Вы можете добавить уникальное ограничение на комбинацию трех столбцов:

ALTER TABLE `blog_table` ADD UNIQUE `unique_index`(`Email`(100), `BlogName`(100), `BlogTitle`(100));

Это также удалит все дубликаты, которые могут уже существовать в таблице вашего блога.

Обратите внимание, что это ограничение использует только первые 100 символов из каждого из трех столбцов, чтобы избежать ошибки #1071-Specified key was too long.

1
Tim Biegeleisen 23 Дек 2015 в 05:47
IF (SELECT 1 = 1 FROM Table WHERE Email=@email and BlogName=@blogname and BlogTitle=@blogtitle) THEN
BEGIN
    #return error message do not insert
END;
ELSE
BEGIN
   #insert logic here
END;
END IF;

Перед вставкой проверьте, существует ли соответствующая запись в таблице.

0
Akshey Bhat 23 Дек 2015 в 05:45

Сделайте эти 3 столбца уникальными.

Вот пример создания составных полей ALTER TABLE table ADD UNIQUE ('field_1', 'field_2', 'field_3');

0
Amol 23 Дек 2015 в 05:39