запрос в MySQL -> INSERT IF ?????
Использовать нормальную БД, поддерживающую триггеры.
а разве primary key не ровно для этого служит?
почитай это
значит, не только primary
только твоя ссылка в какое-то странное место ведёт
+если попытаюсь вставить не уникуе -выдаст ошибку и прекратит вставку...
А мне нужна именно проверка условия на существование!
тады забей на MySQL
ты хочешь попытатся втавить и потом узнать получилось ли ?
тогда втавляешь а потом смотриш mysql_affected_rows, типа скока вставилось.
(ну или на чём ты там пишешь ?)
ещё посмотри на INSERT IGNORE - хз, может понабится.
а если ты хочешь просто узнать есть ли оно - тут просто SELECT ^)
маза, не знал...
поискать в бд, если ничего не нашлось - вставить. Обойтись можно без всяких индексов (если так нужно). Ровным счетом то, что ты хочешь
имхо он его изначально отбросил, т.е. задача сделать это без select
странно, что никто не предложил такой вариант:Вот так и появляются race conditions.
поискать в бд, если ничего не нашлось - вставить. Обойтись можно без всяких индексов (если так нужно). Ровным счетом то, что ты хочешь
ты хочешь попытатся втавить и потом узнать получилось ли ?mysql_affected_rows осмысленна для UPDATE и DELETE, но не для INSERT.
тогда втавляешь а потом смотриш mysql_affected_rows, типа скока вставилось.
Хотя для INSERT FROM FILE (или как там в MySQL) может быть и осмысленна.
Вот так и появляются race conditions.
а что это? Можешь пояснить?
ты инсертом узнаешь что такой ячейки нет, и еще кто-то узнает то же самое в тот же момент, и вы вместе закидываете в базу одинаковые значения тем самым нарушая согласованность БД...
типа ты селект сделаешь, запись не найдешь и будешь инсерт делать, но в процессе кто-то вставит запись
mysql_affected_rows осмысленна для UPDATE и DELETE, но не для INSERT.
Хотя для INSERT FROM FILE (или как там в MySQL) может быть и осмысленна.
mysql_affected_rows
СИНТАКСИС:
int mysql_affected_rows(MYSQL *mysql)
ОПИСАНИЕ:
Возвращает число строк, на которые воздействует последний UPDATE, DELETE или INSERT.
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ:
Целое число > 0 показывает число измененных строк.
Ноль, если никакие записи не соответствовали предложению WHERE в UPDATE или DELETE.
-1, если запрос возвратил ошибку, например, была сделана попытка добавить двойной первичный ключ в течение одного INSERT.
-----
Если использован IGNORE, строки будут пропущен, если там уже существует запись с идентичным уникальным ключом. Если ни один из вышеупомянутых параметров не используется, будет выдана ошибка, и остальная часть будет игнорироваться, если найден дублирующий ключ.
-----
вот.
При этом - тип значения - текст, что значит, что уникальным я его сделать не могу...
ZB: Что нить типа такой конструкции: insert if not exist (mytext) into mytable (col1, col2) values (mytext, myvalue)
тока с правильным синтаксисом....
Оставить комментарий
stm7884696
народ, написать запрос, который бы добавлял запись в базу только если такой записи там нет... Проверка - по одному или двум полям. Всего полей - 3 и более., из которых одно -id автоинкримент...т.е. Если есть:
1 маша 123
2 петя 345
3 коля 456
то запись маша 345 не добавилась, а запись саша 123 -добавилась...