ВСТАВИТЬ пакет, и если дубликат ключа Обновить в codeigniter

Есть ли способ выполнить пакетный запрос Insert, и если ключ уже существует, ОБНОВИТЬ эту строку в codeigniter? Я просмотрел документацию и нашел только insert_batch и update_batch. Но как обновить строку с повторяющимся ключом в активных записях? А что произойдет, если одна строка не может быть вставлена ​​или обновлена ​​в batch_insert? Вся вставка не выполняется или только эта строка?


person Sandesh Sharma    schedule 24.12.2013    source источник
comment
stackoverflow.com/a/10372550/1239506   -  person Moyed Ansari    schedule 24.12.2013


Ответы (2)


Вам нужно будет пойти с небольшим настраиваемым запросом, добавив оператор «ON DUPLICATE»

$sql = $this->db->insert_string('YourTable', $data) . ' ON DUPLICATE KEY UPDATE duplicate=duplicate+1';
$this->db->query($sql);
$id = $this->db->insert_id();

Также проверьте это, это даст вам лучшее решение

person Moyed Ansari    schedule 24.12.2013

Для Codeigniter 3 вы можете использовать эту библиотеку. Это позволяет вам предоставить массив пар ключ-значение для вставки в отдельные строки и автоматически обновлять данные, если в БД встречается повторяющийся ключ. https://github.com/amir-ranglerz/CodeIgniter-Insert-Batch-on-DUPLICATE-KEY-Update

person Amir Hussain    schedule 07.08.2020