Як в MySQL вставити, якщо не існує?
Я почав з гуглення і знайшов цю статтю, яка розповідає про м'ютексні таблиці.
У мене є таблиця з ~14 мільйонами записів. Якщо я хочу додати більше даних у тому ж форматі, чи є спосіб переконатися, що запис, який я хочу вставити, вже не існує без використання пари запитів (тобто один запит для перевірки, а інший для вставки, якщо результуючий набір порожній)?
Чи гарантує "унікальне" обмеження на поле, що вставка не вдасться, якщо воно вже існує?
Здається, що з просто обмеженням, коли я видаю вставку через php, скрипт скрипить.
778
3
use `INSERT IGNORE INTO table
див.
також існує синтаксис
INSERT ... ON DUPLICATE KEY UPDATE
, пояснення можна знайти на dev.mysql.comПост з bogdan.org.ua згідно з Google's webcache:
18 жовтня 2007 року
on duplicate key update або insert ignore можуть бути життєздатними рішеннями для MySQL.
**Приклад оновлення on duplicate key update на основі mysql.com
Приклад вставити ігнорувати на основі mysql.com
Або:
Або:
Будь-яке просте обмеження повинно виконувати роботу, якщо виняток є прийнятним. Приклади
Вибачте, це здається оманливо простим. Я знаю, що це виглядає погано на фоні посилання, яким ви поділилися з нами ;-(
Але я все одно даю цю відповідь, тому що вона, здається, відповідає вашим потребам. (Якщо ні, то це може спонукати Вас до оновлення Ваших вимог, що також було б "Доброю справою" (ТМ)).
Відредаговано: Якщо вставка порушить обмеження унікальності бази даних, буде згенеровано виключення на рівні бази даних, що передається драйвером. Це, безумовно, зупинить ваш скрипт з помилкою. У PHP повинна бути можливість вирішити цей випадок ...