Всегда если требовалось вставить строку если такой нет, использовал 2 запроса, т.е. сначала
SELECT
затем
INSERT
но вычитал что можно делать все это в одном запросе используя
INSERT INGNORE INTO
для этого нужно сделать уникальным и индексным поле по которому будет идти проверка.
Вродебы все сделал, но строки не вставляются вообще никакие.
Может кто сталкивался с подобной проблемой, и подскажет что именно я делаю не так.
1
Как использовать INSERT INGNORE INTO
Автор
R.Sergey
, Nov 29 2013 11:12 PM
Сообщений в теме: 3
#1
Отправлено 29 November 2013 - 11:12 PM
#2
Отправлено 29 November 2013 - 11:34 PM
Я пользовал. Не помню ограничений. Вроде, использовал как-то INSERT IGNORE вместо REPLACE, были какие-то тонкости использования. По памяти - INSERT IGNORE - это ничего не делать если такая уникальная запись по тем или иным причинам уже есть. В отличие от REPLACE, который перезапишет эту запись. Но и не выдавать ошибку в отличие от просто INSERT. Как-то так.
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)
#3
Отправлено 29 November 2013 - 11:50 PM
Да я понимаю в чем разница )) . Я не понимаю почему у меня не работает эта конструкция.
Мне как раз не нужно удалять и записывать строку, мне нужно проверять по одному полю, если такое значение уже есть, то пропускать и добавлять другие строки.
Мда это капец какойто. Было было но такого еще не было.
Думаю нет фигня должно работать проверю через phpmyadmin запрос. Копирую - пишет ошибка синтаксиса - Гм....
Удаляю IGNORE все ок строка добавилась
Руками дописываю IGNORE - работает.
Оказывается там откуда я скопировал оператор была в нем ошибка было написано INGNORE - а я как дурак сижу второй вечер гугл пытаю
Мне как раз не нужно удалять и записывать строку, мне нужно проверять по одному полю, если такое значение уже есть, то пропускать и добавлять другие строки.
Мда это капец какойто. Было было но такого еще не было.
Думаю нет фигня должно работать проверю через phpmyadmin запрос. Копирую - пишет ошибка синтаксиса - Гм....
Удаляю IGNORE все ок строка добавилась
Руками дописываю IGNORE - работает.
Оказывается там откуда я скопировал оператор была в нем ошибка было написано INGNORE - а я как дурак сижу второй вечер гугл пытаю
#4
Отправлено 29 November 2013 - 11:58 PM
Вот удивил. Я тут вчера пару часов ошибку искал, а всего-то делов было в ProdictID вместо productID. Вроде и очевидно, а по ходу не сразу и заметишь, что первая буква большая вместо мелкой. Причем сам же и написал почему-то....Оказывается там откуда я скопировал оператор была в нем ошибка было написано INGNORE - а я как дурак сижу второй вечер гугл пытаю
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)