MySQL Вставка только уникального набора данных

Статус
В этой теме нельзя размещать новые ответы.

latteo

Эффективное использование PHP, MySQL
Регистрация
27 Фев 2008
Сообщения
1.603
Реакции
1.565
MySQL Вставка только уникального набора данных
Как то я немного подвис:
- есть таблица с десятком полей
- есть скрипт, который хочет вставить новую строку
Внимание вопрос: мне придется средствами ЯП сделать выборку из базы и потом для каждого поля провести сравнение на "===" или есть, способ сделать это с помощью SQL?
 
  • Заблокирован
  • #2
в mysql можно установить что пданные в поле будут только уникальные. то есть двух одинаковых записей он просто не добавит и выдаст ошибку.
 
в mysql можно установить что пданные в поле будут только уникальные. то есть двух одинаковых записей он просто не добавит и выдаст ошибку.
Для поля можно установить Unique - это я знаю, а для сочетания из нескольких полей?
В пределах столбца значение у меня может повторятся, необходимо чтобы insert в таблицу производился только в том случае, если нет точно такой же строки в этой таблице - а то запросто дублями наводнить можно...
 
Можно еще использовать DISTINCT в sql запросе и из базы будут возвращаться все уникальные записи по определенному полю
 
UNIQUE может быть несколько.
INSERT INTO труляля Values
если ON DUPLICATE - то IGNORE ?

Если есть IGNORE при вставке INSERT с множеством стpок, тогда любая вставляемая стpока, где дублируется значение столбцов Unique - игнорируется и не вставляется.
 
MySQL Вставка только уникального набора данных
Как то я немного подвис:
- есть таблица с десятком полей
- есть скрипт, который хочет вставить новую строку
Внимание вопрос: мне придется средствами ЯП сделать выборку из базы и потом для каждого поля провести сравнение на "===" или есть, способ сделать это с помощью SQL?
Можно сделать уникальный ключ на все поля, как уже написали выше. Но, имхо, неправильное решение, потому что каждая попытка вставить дублирующие данные будет генерировать ошибку. Можно делать проверку перед каждой вставкой. На php это будет примерно так
PHP:
$result = mysql_query("select count(*) as c from ...");
$row = mysql_fetch_array($result);
if ($row['c'] == 0) {
mysql_query("insert into ...");
}
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху