Как проверять две колонки на уникальность в mysql?
Здравствуйте, имеется таблица%
id | article | brand
1 | 01 | BMW
2 | 02 | BMW
3 | 03 | BMW
4 | 04 | BMW
5 | 01 | BMW
6 | 01 | VAG
7 | 02 | VAG
8 | 01 | VAG
Сейчас перед добавлением данных идет проверка:
$res = $db->getRow("SELECT * FROM products WHERE article = ?s and brand = ?s ", $article, $brand) (использую SafeMySQL)
if(empty($res)) {
INSERT ....
} else {
continue;
}
по моей логике оно должно не добавлять дубли в базу, но они как то попадают туда, добавление происходит с excel, тоесть импортируется ексель файл и с него построчно идет проверка.
Из-за того то есть дубли я подумал о составных индексах, вопрос как правильно это сделать ?
Тоесть должна быть уникальная связка article,brand
Из таблицы выше дубли это id: 5 и 8
Article может иметь несколько одинаковых значений, и brand тоже имеет одинаковые значения НО article и brand всегда должен быть уникальным
pavlikmd, ну, при попытке вставить дубликаты - будет ошибка.
Индекс не позволит добавить в таблицу дубликаты, но его использование не отменяет то, что Вы должны делать проверку на наличие записи перед вставкой, если Вы не используете специальные запросы типа INSERT IGNORE/INSERT… ON DUPLICATE KEY UPDATE