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

Тема в разделе "Базы данных", создана пользователем latteo, 30 окт 2010.

Статус темы:
Закрыта.
Модераторы: latteo
  1. latteo

    latteo Эффективное использование PHP, MySQL

    Moderator
    Регистр.:
    28 фев 2008
    Сообщения:
    1.403
    Симпатии:
    1.185
    MySQL Вставка только уникального набора данных
    Как то я немного подвис:
    - есть таблица с десятком полей
    - есть скрипт, который хочет вставить новую строку
    Внимание вопрос: мне придется средствами ЯП сделать выборку из базы и потом для каждого поля провести сравнение на "===" или есть, способ сделать это с помощью SQL?
     
  2. Juri

    Juri

    Заблокирован
    Регистр.:
    5 окт 2007
    Сообщения:
    1.068
    Симпатии:
    197
    в mysql можно установить что пданные в поле будут только уникальные. то есть двух одинаковых записей он просто не добавит и выдаст ошибку.
     
    latteo нравится это.
  3. latteo

    latteo Эффективное использование PHP, MySQL

    Moderator
    Регистр.:
    28 фев 2008
    Сообщения:
    1.403
    Симпатии:
    1.185
    Для поля можно установить Unique - это я знаю, а для сочетания из нескольких полей?
    В пределах столбца значение у меня может повторятся, необходимо чтобы insert в таблицу производился только в том случае, если нет точно такой же строки в этой таблице - а то запросто дублями наводнить можно...
     
  4. alfaexpert

    alfaexpert

    Регистр.:
    23 июл 2008
    Сообщения:
    183
    Симпатии:
    27
    Можно еще использовать DISTINCT в sql запросе и из базы будут возвращаться все уникальные записи по определенному полю
     
    latteo нравится это.
  5. nafanyaa

    nafanyaa

    Регистр.:
    23 авг 2006
    Сообщения:
    286
    Симпатии:
    170
    UNIQUE может быть несколько.
    INSERT INTO труляля Values
    если ON DUPLICATE - то IGNORE ?

    Если есть IGNORE при вставке INSERT с множеством стpок, тогда любая вставляемая стpока, где дублируется значение столбцов Unique - игнорируется и не вставляется.
     
    latteo нравится это.
  6. chang

    chang

    Регистр.:
    20 ноя 2009
    Сообщения:
    364
    Симпатии:
    117
    и для "сочетания" можно
    PHP:
    ALTER TABLE `table_nameADD UNIQUE (
    `
    column_1` , `column_2`, `column_3`
    )
     
    latteo нравится это.
  7. peter1970

    peter1970 Создатель

    Регистр.:
    28 авг 2008
    Сообщения:
    29
    Симпатии:
    6
    Можно сделать уникальный ключ на все поля, как уже написали выше. Но, имхо, неправильное решение, потому что каждая попытка вставить дублирующие данные будет генерировать ошибку. Можно делать проверку перед каждой вставкой. На php это будет примерно так
    PHP:
    $result mysql_query("select count(*) as c from ...");
    $row mysql_fetch_array($result);
    if (
    $row['c'] == 0) {
    mysql_query("insert into ...");
    }
     
    latteo нравится это.
Статус темы:
Закрыта.